Make miniglog threadsafe on non-windows system by using
localtime_r() instead of localtime() for time formatting

Change-Id: Ib8006c685cd8ed4f374893bef56c4061ca2c9747
diff --git a/internal/ceres/miniglog/glog/logging.h b/internal/ceres/miniglog/glog/logging.h
index f2c2ff4..0fdf382 100644
--- a/internal/ceres/miniglog/glog/logging.h
+++ b/internal/ceres/miniglog/glog/logging.h
@@ -229,14 +229,13 @@
     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 @@
     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());
     }
   }