From 0ecbae80d0f7e04e205949b8a3214f1098420140 Mon Sep 17 00:00:00 2001 From: Pawel Andruszkiewicz Date: Tue, 8 Mar 2016 10:08:58 +0100 Subject: [PATCH] [Globalization] Replaced localtime with localtime_r. Fixes: SVACE 46469 [Verification] Pass rate did not change. Change-Id: If4bf00dd1c34800f0216a0f9fdbda7b42e277f57 Signed-off-by: Pawel Andruszkiewicz --- .../cordova_globalization_instance.cc | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/globalization/cordova_globalization_instance.cc b/src/globalization/cordova_globalization_instance.cc index cae29c9..fa6f045 100644 --- a/src/globalization/cordova_globalization_instance.cc +++ b/src/globalization/cordova_globalization_instance.cc @@ -127,25 +127,29 @@ void CordovaGlobalizationInstance::StringToDate(const picojson::value& args, // UDate holds milliseconds, conversion to time_t needs seconds time_t seconds_ts = (time_t)(result_date / 1000); - struct tm * result_time = localtime(&seconds_ts); - picojson::value result = picojson::value(picojson::object()); - picojson::object& result_obj = result.get(); - result_obj.insert(std::make_pair( - "year", picojson::value(static_cast(result_time->tm_year + 1900)))); - result_obj.insert(std::make_pair( - "month", picojson::value(static_cast(result_time->tm_mon)))); - result_obj.insert(std::make_pair( - "day", picojson::value(static_cast(result_time->tm_mday)))); - result_obj.insert(std::make_pair( - "hour", picojson::value(static_cast(result_time->tm_hour)))); - result_obj.insert(std::make_pair( - "minute", picojson::value(static_cast(result_time->tm_min)))); - result_obj.insert(std::make_pair( - "second", picojson::value(static_cast(result_time->tm_sec)))); - result_obj.insert(std::make_pair( - "millisecond", picojson::value(static_cast(0.0)))); + struct tm result_time = {0}; + if (nullptr != localtime_r(&seconds_ts, &result_time)) { + picojson::value result = picojson::value(picojson::object()); + picojson::object& result_obj = result.get(); + result_obj.insert(std::make_pair( + "year", picojson::value(static_cast(result_time.tm_year + 1900)))); + result_obj.insert(std::make_pair( + "month", picojson::value(static_cast(result_time.tm_mon)))); + result_obj.insert(std::make_pair( + "day", picojson::value(static_cast(result_time.tm_mday)))); + result_obj.insert(std::make_pair( + "hour", picojson::value(static_cast(result_time.tm_hour)))); + result_obj.insert(std::make_pair( + "minute", picojson::value(static_cast(result_time.tm_min)))); + result_obj.insert(std::make_pair( + "second", picojson::value(static_cast(result_time.tm_sec)))); + result_obj.insert(std::make_pair( + "millisecond", picojson::value(static_cast(0.0)))); - ReportSuccess(result, response->get()); + ReportSuccess(result, response->get()); + } else { + ReportError(PlatformResult(ErrorCode::INVALID_VALUES_ERR, "Failed to convert"), &(response->get())); + } } else { ReportError(ret, &(response->get())); } -- 2.34.1