From: Piotr Kosko/Native/Web API (PLT) /SRPOL/Engineer/Samsung Electronics Date: Thu, 28 Jan 2021 09:57:03 +0000 (+0100) Subject: [Common] Fixed invalid parsing of decimal values X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2cb036ef6e77b552b2852b8cbd81f435b6c9708d;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Common] Fixed invalid parsing of decimal values [Bug] Decimal values fails to parse properly when locale of device was e.g. Deutsch [Verification] //Below code works well for locales: English, Deutsch, Francais // sound values are changing and show aproximately same values // (depending on platform adjustments) tizen.sound.setVolume("MEDIA", 0.1); console.log(tizen.sound.getVolume("MEDIA")) >> 0.13 Change-Id: Icde211bcfcc66cf0d66852816d2a00907adf4571 --- diff --git a/src/common/extension.cc b/src/common/extension.cc index 9fc1547b..71d3db0c 100644 --- a/src/common/extension.cc +++ b/src/common/extension.cc @@ -332,7 +332,7 @@ void ParsedInstance::HandleMessage(const char* msg, bool is_sync) { std::string err; picojson::parse(value, msg, msg + strlen(msg), &err); if (!err.empty()) { - LoggerE("Ignoring message, error: %s", err.c_str()); + LoggerE("Ignoring message:\"%s\", error: %s", msg, err.c_str()); return; } diff --git a/src/common/picojson.h b/src/common/picojson.h index c6b9aded..54a40a74 100644 --- a/src/common/picojson.h +++ b/src/common/picojson.h @@ -916,7 +916,9 @@ inline bool _parse(Context &ctx, input &in) { } } #endif - f = strtod(num_str.c_str(), &endp); + locale_t loc = newlocale(LC_NUMERIC_MASK, "C", (locale_t) 0); + f = strtod_l(num_str.c_str(), &endp, loc); + freelocale(loc); if (endp == num_str.c_str() + num_str.size()) { ctx.set_number(f); return true;