Make miniglog threadsafe on non-windows system by using

localtime_r() instead of localtime() for time formatting

Change-Id: Ib8006c685cd8ed4f374893bef56c4061ca2c9747
This commit is contained in:
Simon Rutishauser
2015-10-13 07:33:58 +02:00
parent 41455566ac
commit dfb201220c
+5 -6
View File
@@ -229,14 +229,13 @@ class CERES_EXPORT MessageLogger {
time_t rawtime;
time (&rawtime);
struct tm* timeinfo;
struct tm timeinfo;
#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
// On Windows, use secure localtime_s not localtime.
struct tm windows_timeinfo;
timeinfo = &windows_timeinfo;
localtime_s(timeinfo, &rawtime);
localtime_s(&timeinfo, &rawtime);
#else
timeinfo = localtime(&rawtime);
// On non-Windows systems, use threadsafe localtime_r not localtime.
localtime_r(&rawtime, &timeinfo);
#endif
std::set<google::LogSink*>::iterator iter;
@@ -244,7 +243,7 @@ class CERES_EXPORT MessageLogger {
for (iter = google::log_sinks_global.begin();
iter != google::log_sinks_global.end(); ++iter) {
(*iter)->send(severity, file_.c_str(), filename_only_.c_str(), line_,
timeinfo, stream_.str().c_str(), stream_.str().size());
&timeinfo, stream_.str().c_str(), stream_.str().size());
}
}