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