From 3cba2422951e64c6b2cffc4fbbcad12dd714b1b8 Mon Sep 17 00:00:00 2001 From: aothms Date: Fri, 14 Aug 2015 22:11:32 +0200 Subject: [PATCH] When built without ICU filter characters outside of unencoded range --- src/ifcparse/IfcCharacterDecoder.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/ifcparse/IfcCharacterDecoder.cpp b/src/ifcparse/IfcCharacterDecoder.cpp index c33a6f9b0c..c3eeb186d7 100644 --- a/src/ifcparse/IfcCharacterDecoder.cpp +++ b/src/ifcparse/IfcCharacterDecoder.cpp @@ -352,8 +352,15 @@ IfcCharacterEncoder::operator std::string() { #else for (std::string::const_iterator i = str.begin(); i != str.end(); ++i) { char ch = *i; - if ( ch == '\\' || ch == '\'' ) oss.put(ch); - oss.put(ch); + const bool within_spf_range = ch >= 0x20 && ch <= 0x7e; + if (within_spf_range) { + if ( ch == '\\' || ch == '\'' ) { + oss.put(ch); + } + oss.put(ch); + } else { + oss.put('_'); + } } #endif oss.put('\'');