diff options
Diffstat (limited to 'ext/date/lib/interval.c')
| -rw-r--r-- | ext/date/lib/interval.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/ext/date/lib/interval.c b/ext/date/lib/interval.c index efd92bd4f..6558d5a8c 100644 --- a/ext/date/lib/interval.c +++ b/ext/date/lib/interval.c @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: interval.c 298973 2010-05-04 15:11:41Z derick $ */ +/* $Id: interval.c 312235 2011-06-17 16:38:23Z derick $ */ #include "timelib.h" @@ -25,6 +25,7 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two) timelib_rel_time *rt; timelib_time *swp; timelib_sll dst_h_corr = 0, dst_m_corr = 0; + timelib_time one_backup, two_backup; rt = timelib_rel_time_ctor(); rt->invert = 0; @@ -45,6 +46,10 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two) dst_m_corr = ((two->z - one->z) % 3600) / 60; } + /* Save old TZ info */ + memcpy(&one_backup, one, sizeof(one_backup)); + memcpy(&two_backup, two, sizeof(two_backup)); + timelib_apply_localtime(one, 0); timelib_apply_localtime(two, 0); @@ -58,8 +63,9 @@ timelib_rel_time *timelib_diff(timelib_time *one, timelib_time *two) timelib_do_rel_normalize(rt->invert ? one : two, rt); - timelib_apply_localtime(one, 1); - timelib_apply_localtime(two, 1); + /* Restore old TZ info */ + memcpy(one, &one_backup, sizeof(one_backup)); + memcpy(two, &two_backup, sizeof(two_backup)); return rt; } |
