aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/engine-eds.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/engine-eds.cpp b/src/engine-eds.cpp
index 746b9af..d9efa5f 100644
--- a/src/engine-eds.cpp
+++ b/src/engine-eds.cpp
@@ -739,19 +739,24 @@ private:
GTimeZone * gtz {};
if (in.tzid != nullptr)
{
- const char * tzid {};
- icaltimezone * itz {};
-
- itz = icaltimezone_get_builtin_timezone_from_tzid(in.tzid); // usually works
+ auto itz = icaltimezone_get_builtin_timezone_from_tzid(in.tzid); // usually works
if (itz == nullptr) // fallback
itz = icaltimezone_get_builtin_timezone(in.tzid);
- if (itz == nullptr) // ok, I give up... make a round trip on the bus to ask EDS to look it up in VTIMEZONES
+ if (itz == nullptr) // ok we have a strange tzid... ask EDS to look it up in VTIMEZONES
e_cal_client_get_timezone_sync(client, in.tzid, &itz, cancellable.get(), nullptr);
+ const char * tzid;
if (itz != nullptr)
+ {
tzid = icaltimezone_get_location(itz);
+ }
+ else
+ {
+ g_warning("Unrecognized TZID: '%s'", in.tzid);
+ tzid = nullptr;
+ }
gtz = g_time_zone_new(tzid);
g_debug("%s eccdt.tzid -> offset is %d", G_STRLOC, in.tzid, (int)g_time_zone_get_offset(gtz,0));