diff --git a/src/lib_json/json_value.cpp b/src/lib_json/json_value.cpp index 637016f3b..30c1208bd 100644 --- a/src/lib_json/json_value.cpp +++ b/src/lib_json/json_value.cpp @@ -105,8 +105,7 @@ static inline char *duplicateStringValue(const char *value, /** Free the string duplicated by duplicateStringValue(). */ static inline void releaseStringValue(char *value) { - if (value) - free(value); + free(value); } } // namespace Json diff --git a/src/lib_json/json_writer.cpp b/src/lib_json/json_writer.cpp index 77ed27dce..71bd86028 100644 --- a/src/lib_json/json_writer.cpp +++ b/src/lib_json/json_writer.cpp @@ -74,15 +74,20 @@ std::string valueToString(double value) { #if defined(_MSC_VER) && defined(__STDC_SECURE_LIB__) // Use secure version with // visual studio 2005 to // avoid warning. + int len; #if defined(WINCE) - _snprintf(buffer, sizeof(buffer), "%.16g", value); + len = _snprintf(buffer, sizeof(buffer), "%.16g", value); #else - sprintf_s(buffer, sizeof(buffer), "%.16g", value); + len = sprintf_s(buffer, sizeof(buffer), "%.16g", value); #endif + assert(len>=0); + fixNumericLocale(buffer, buffer + len); #else if ( isfinite( value )) - { - snprintf(buffer, sizeof(buffer), "%.16g", value); + { + int len = snprintf(buffer, sizeof(buffer), "%.16g", value); + assert(len>=0); + fixNumericLocale(buffer, buffer + len); } else { @@ -99,12 +104,8 @@ std::string valueToString(double value) { { snprintf(buffer, sizeof(buffer), "1e+9999"); } - // nothing more to do, return. - return buffer; } - #endif - fixNumericLocale(buffer, buffer + strlen(buffer)); return buffer; }