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-Tag: submit/tizen_6.0/20210128.113333^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2f643f3e9317054db26684af2186243fce92d203;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 6a0a2c3..a85ad0f 100644 --- a/src/common/extension.cc +++ b/src/common/extension.cc @@ -350,7 +350,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 c6b9ade..54a40a7 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;