[libc-commits] [libc] [libc] Complete hardening of time functions and remove Y2038 limit (PR #203298)

via libc-commits libc-commits at lists.llvm.org
Thu Jun 11 09:19:40 PDT 2026


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,h -- libc/src/time/asctime.cpp libc/src/time/asctime_r.cpp libc/src/time/ctime.cpp libc/src/time/ctime_r.cpp libc/src/time/gmtime.cpp libc/src/time/gmtime_r.cpp libc/src/time/localtime.cpp libc/src/time/localtime_r.cpp libc/src/time/mktime.cpp libc/src/time/strftime.cpp libc/src/time/strftime_core/composite_converter.h libc/src/time/strftime_core/converter.h libc/src/time/strftime_core/num_converter.h libc/src/time/strftime_core/str_converter.h libc/src/time/strftime_l.cpp libc/src/time/time_utils.cpp libc/src/time/time_utils.h libc/test/src/time/asctime_r_test.cpp libc/test/src/time/asctime_test.cpp libc/test/src/time/ctime_r_test.cpp libc/test/src/time/ctime_test.cpp libc/test/src/time/gmtime_r_test.cpp libc/test/src/time/gmtime_test.cpp libc/test/src/time/localtime_r_test.cpp libc/test/src/time/localtime_test.cpp libc/test/src/time/mktime_test.cpp --diff_from_common_commit
``````````

:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/libc/src/time/time_utils.cpp b/libc/src/time/time_utils.cpp
index 5ef562a24..945e555e8 100644
--- a/libc/src/time/time_utils.cpp
+++ b/libc/src/time/time_utils.cpp
@@ -20,8 +20,8 @@ namespace time_utils {
 cpp::optional<time_t> mktime_internal(const tm *tm_out) {
   // Unlike most C Library functions, mktime doesn't just die on bad input.
   // TODO(rtenneti); Handle leap seconds.
-  int64_t tm_year_from_base = static_cast<int64_t>(tm_out->tm_year) +
-                              time_constants::TIME_YEAR_BASE;
+  int64_t tm_year_from_base =
+      static_cast<int64_t>(tm_out->tm_year) + time_constants::TIME_YEAR_BASE;
 
   // Years are ints.  A 32-bit year will fit into a 64-bit time_t.
   // A 64-bit year will not.
diff --git a/libc/src/time/time_utils.h b/libc/src/time/time_utils.h
index 531068e0e..208393a4a 100644
--- a/libc/src/time/time_utils.h
+++ b/libc/src/time/time_utils.h
@@ -47,7 +47,6 @@ constexpr int TIME_OVERFLOW = EOVERFLOW;
 constexpr int TIME_OVERFLOW = ERANGE;
 #endif
 
-
 /// Update the "tm" structure's year, month, etc. members from seconds.
 ///
 /// \param total_seconds The number of seconds since January 1st, 1970.
diff --git a/libc/test/src/time/asctime_test.cpp b/libc/test/src/time/asctime_test.cpp
index 0d9d0631d..88aaad780 100644
--- a/libc/test/src/time/asctime_test.cpp
+++ b/libc/test/src/time/asctime_test.cpp
@@ -8,9 +8,9 @@
 
 #include "hdr/errno_macros.h"
 
-#include "src/time/time_utils.h"
 #include "hdr/signal_macros.h"
 #include "src/time/asctime.h"
+#include "src/time/time_utils.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/Test.h"
 #include "test/src/time/TmHelper.h"
diff --git a/libc/test/src/time/ctime_r_test.cpp b/libc/test/src/time/ctime_r_test.cpp
index 1807757fc..62e67bc2f 100644
--- a/libc/test/src/time/ctime_r_test.cpp
+++ b/libc/test/src/time/ctime_r_test.cpp
@@ -7,9 +7,9 @@
 //===----------------------------------------------------------------------===//
 
 #include "hdr/signal_macros.h"
-#include "src/time/time_utils.h"
 #include "src/time/ctime_r.h"
 #include "src/time/time_constants.h"
+#include "src/time/time_utils.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/Test.h"
 #include "test/src/time/TmHelper.h"
diff --git a/libc/test/src/time/ctime_test.cpp b/libc/test/src/time/ctime_test.cpp
index 0d704f89c..af37593ea 100644
--- a/libc/test/src/time/ctime_test.cpp
+++ b/libc/test/src/time/ctime_test.cpp
@@ -7,8 +7,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "hdr/signal_macros.h"
-#include "src/time/time_utils.h"
 #include "src/time/ctime.h"
+#include "src/time/time_utils.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/Test.h"
 #include "test/src/time/TmHelper.h"
diff --git a/libc/test/src/time/gmtime_test.cpp b/libc/test/src/time/gmtime_test.cpp
index 88b301d66..0a0d6d0ee 100644
--- a/libc/test/src/time/gmtime_test.cpp
+++ b/libc/test/src/time/gmtime_test.cpp
@@ -8,12 +8,12 @@
 
 #include "hdr/errno_macros.h"
 
-#include "src/time/time_utils.h"
 #include "hdr/signal_macros.h"
 #include "hdr/types/struct_tm.h"
 #include "src/__support/CPP/limits.h" // INT_MAX, INT_MIN
 #include "src/time/gmtime.h"
 #include "src/time/time_constants.h"
+#include "src/time/time_utils.h"
 #include "test/UnitTest/ErrnoCheckingTest.h"
 #include "test/UnitTest/Test.h"
 #include "test/src/time/TmMatcher.h"

``````````

</details>


https://github.com/llvm/llvm-project/pull/203298


More information about the libc-commits mailing list