From bb9216085fbbf193408653ced9e73c61e7766e80 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Mon, 29 Nov 2021 20:52:52 -0800 Subject: [PATCH] Work around Android KitKat tzset bug On KitKat, calling tzset with UTC+nn doesn't initialize all the timezone state. If the previous timezone was something like America/Chicago, then changing it to UTC+nn might have no effect. Setting the timezone to an intermediate value like "UTC" avoids the problem. Works around https://github.com/android/ndk/issues/1604. PiperOrigin-RevId: 413050236 Change-Id: I99b2d3330ae68f1d58cd2ca278d3eaae30bd1e83 --- googletest/test/gtest_unittest.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/googletest/test/gtest_unittest.cc b/googletest/test/gtest_unittest.cc index c079f463..6b2632af 100644 --- a/googletest/test/gtest_unittest.cc +++ b/googletest/test/gtest_unittest.cc @@ -450,6 +450,12 @@ class FormatEpochTimeInMillisAsIso8601Test : public Test { tzset(); GTEST_DISABLE_MSC_WARNINGS_POP_() #else +#if GTEST_OS_LINUX_ANDROID && __ANDROID_API__ < 21 + // Work around KitKat bug in tzset by setting "UTC" before setting "UTC+00". + // See https://github.com/android/ndk/issues/1604. + setenv("TZ", "UTC", 1); + tzset(); +#endif if (time_zone) { setenv(("TZ"), time_zone, 1); } else {