/* No timezone in struct, fallback to reference if possible */
if (tzi) {
timelib_time_offset *before, *after;
+ timelib_sll tmp;
tz->is_localtime = 1;
before = timelib_get_time_zone_info(tz->sse, tzi);
after = timelib_get_time_zone_info(tz->sse - before->offset, tzi);
timelib_set_timezone(tz, tzi);
if (before->is_dst != after->is_dst) {
- return -tz->z + (before->offset - after->offset);
+ tmp = -tz->z + (before->offset - after->offset);
} else {
- return -tz->z;
+ tmp = -tz->z;
}
+ timelib_time_offset_dtor(before);
+ timelib_time_offset_dtor(after);
+
+ return tmp;
}
}
return 0;