summaryrefslogtreecommitdiff
path: root/ext/date/lib/interval.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/date/lib/interval.c')
-rw-r--r--ext/date/lib/interval.c12
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;
}