From f3531276c84d2420d14df2e5f382710eb0fb5cf0 Mon Sep 17 00:00:00 2001 From: aothms Date: Sat, 22 Mar 2014 13:02:21 +0000 Subject: [PATCH] No longer accept and silently convert invalid REAL tokens to zero --- src/ifcparse/IfcParse.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ifcparse/IfcParse.cpp b/src/ifcparse/IfcParse.cpp index 99252efd1b..bab81e4b0e 100644 --- a/src/ifcparse/IfcParse.cpp +++ b/src/ifcparse/IfcParse.cpp @@ -348,7 +348,11 @@ bool TokenFunc::asBool(const Token& t) { } double TokenFunc::asFloat(const Token& t) { const std::string str = asString(t); - return (double) atof(str.c_str()); + const char* start = str.c_str(); + char* end; + double result = strtod(start,&end); + if ( start == end ) throw IfcException("Token is not a real"); + return result; } std::string TokenFunc::asString(const Token& t) { if ( isOperator(t,'$') ) return "";