]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
fix: Make fallbacks in util::gmtime and util::localtime thread-safe
authorJoel Rosdahl <joel@rosdahl.net>
Sat, 9 May 2026 14:40:05 +0000 (16:40 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Sat, 9 May 2026 14:40:58 +0000 (16:40 +0200)
src/ccache/util/time.cpp

index 30591eda257ac83fd816606ad54cca8676ed7816..acc9f28c2c94664538718c2c7ca2b0339d6ca53a 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2023-2025 Joel Rosdahl and other contributors
+// Copyright (C) 2023-2026 Joel Rosdahl and other contributors
 //
 // See doc/authors.adoc for a complete list of contributors.
 //
@@ -18,6 +18,8 @@
 
 #include "time.hpp"
 
+#include <mutex>
+
 namespace util {
 
 std::optional<tm>
@@ -30,6 +32,8 @@ gmtime(std::optional<TimePoint> time)
     return result;
   }
 #else
+  static std::mutex mutex;
+  std::lock_guard<std::mutex> lock(mutex);
   struct tm* result = ::gmtime(&timestamp);
   if (result) {
     return *result;
@@ -48,6 +52,8 @@ localtime(std::optional<TimePoint> time)
     return result;
   }
 #else
+  static std::mutex mutex;
+  std::lock_guard<std::mutex> lock(mutex);
   struct tm* result = ::localtime(&timestamp);
   if (result) {
     return *result;