diff options
Diffstat (limited to 'absl/time/internal/cctz/src/time_zone_if.cc')
-rw-r--r-- | absl/time/internal/cctz/src/time_zone_if.cc | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/absl/time/internal/cctz/src/time_zone_if.cc b/absl/time/internal/cctz/src/time_zone_if.cc index 0e65cd9e..1d44dde7 100644 --- a/absl/time/internal/cctz/src/time_zone_if.cc +++ b/absl/time/internal/cctz/src/time_zone_if.cc @@ -23,19 +23,19 @@ ABSL_NAMESPACE_BEGIN namespace time_internal { namespace cctz { -std::unique_ptr<TimeZoneIf> TimeZoneIf::UTC() { return TimeZoneInfo::UTC(); } - -std::unique_ptr<TimeZoneIf> TimeZoneIf::Make(const std::string& name) { +std::unique_ptr<TimeZoneIf> TimeZoneIf::Load(const std::string& name) { // Support "libc:localtime" and "libc:*" to access the legacy // localtime and UTC support respectively from the C library. // NOTE: The "libc:*" zones are internal, test-only interfaces, and // are subject to change/removal without notice. Do not use them. if (name.compare(0, 5, "libc:") == 0) { - return TimeZoneLibC::Make(name.substr(5)); + return std::unique_ptr<TimeZoneIf>(new TimeZoneLibC(name.substr(5))); } - // Otherwise use the "zoneinfo" implementation. - return TimeZoneInfo::Make(name); + // Otherwise use the "zoneinfo" implementation by default. + std::unique_ptr<TimeZoneInfo> tz(new TimeZoneInfo); + if (!tz->Load(name)) tz.reset(); + return std::unique_ptr<TimeZoneIf>(tz.release()); } // Defined out-of-line to avoid emitting a weak vtable in all TUs. |