changeset 22896:8dadddab10ed

Fix purple_str_to_time() to not break the returned value when we have given it a string with a GMT offset (like a log filename). We were setting tm_isdst to 0 when we knew the offset. Apparently, mktime() said, "Umm, yes, it is DST." and fixed it by shifting the hour. The fix is to tell the C library (by setting tm_isdst to -1) that we're sure of the time, but not the DST status. Hopefully this doesn't break any other code path. Fixes #3550
author Richard Laager <rlaager@wiktel.com>
date Sun, 11 May 2008 04:50:36 +0000
parents 0bd86dae2734
children cf2ac6f0758a
files libpurple/util.c
diffstat 1 files changed, 3 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/libpurple/util.c	Sun May 11 00:27:18 2008 +0000
+++ b/libpurple/util.c	Sun May 11 04:50:36 2008 +0000
@@ -831,9 +831,6 @@
 				tzoff = tzhrs*60*60 + tzmins*60;
 				if (offset_positive)
 					tzoff *= -1;
-				/* We don't want the C library doing DST calculations
-				 * if we know the UTC offset already. */
-				t.tm_isdst = 0;
 			}
 			else if (utc)
 			{
@@ -895,14 +892,11 @@
 		}
 	}
 
+	retval = mktime(&t);
+
 	if (tm != NULL)
-	{
 		*tm = t;
-		tm->tm_isdst = -1;
-		mktime(tm);
-	}
-
-	retval = mktime(&t);
+
 	if (tzoff != PURPLE_NO_TZ_OFF)
 		retval += tzoff;