diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index ef976bfab..66ca21727 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -317,8 +317,14 @@ void FastWriter::writeValue(const Value& value) { document_ += valueToString(value.asDouble()); break; case stringValue: - document_ += valueToQuotedString(value.asCString()); + { + // Is NULL possible for value.string_? + char const* str; + char const* end; + bool ok = value.getString(&str, &end); + if (ok) document_ += valueToQuotedStringN(str, static_cast(end-str)); break; + } case booleanValue: document_ += valueToString(value.asBool()); break; @@ -382,7 +388,7 @@ void StyledWriter::writeValue(const Value& value) { break; case stringValue: { - // Is NULL is possible for value.string_? + // Is NULL possible for value.string_? char const* str; char const* end; bool ok = value.getString(&str, &end); @@ -599,8 +605,15 @@ void StyledStreamWriter::writeValue(const Value& value) { pushValue(valueToString(value.asDouble())); break; case stringValue: - pushValue(valueToQuotedString(value.asCString())); + { + // Is NULL possible for value.string_? + char const* str; + char const* end; + bool ok = value.getString(&str, &end); + if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); + else pushValue(""); break; + } case booleanValue: pushValue(valueToString(value.asBool())); break;