summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--time.c7
-rw-r--r--version.h2
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 106148a863..14582e0906 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Feb 2 20:03:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * time.c (time_mdump, time_mload): preserves GMT status.
+ [ruby-core:19252]
+
Mon Feb 2 11:33:26 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* variable.c (autoload_delete, autoload_file): should not delete
diff --git a/time.c b/time.c
index b27b43464a..2707b05f61 100644
--- a/time.c
+++ b/time.c
@@ -1928,6 +1928,7 @@ time_mdump(time)
rb_raise(rb_eArgError, "year too big to marshal");
p = 0x1UL << 31 | /* 1 */
+ tobj->gmt << 30 | /* 1 */
tm->tm_year << 14 | /* 16 */
tm->tm_mon << 10 | /* 4 */
tm->tm_mday << 5 | /* 5 */
@@ -1986,7 +1987,7 @@ time_mload(time, str)
time_t sec, usec;
unsigned char *buf;
struct tm tm;
- int i;
+ int i, gmt;
time_modify(time);
StringValue(str);
@@ -2008,7 +2009,8 @@ time_mload(time, str)
usec = s;
}
else {
- p &= ~(1UL<<31);
+ p &= ~(1UL<<31);
+ gmt = (p >> 30) & 0x1;
tm.tm_year = (p >> 14) & 0xffff;
tm.tm_mon = (p >> 10) & 0xf;
tm.tm_mday = (p >> 5) & 0x1f;
@@ -2024,6 +2026,7 @@ time_mload(time, str)
GetTimeval(time, tobj);
tobj->tm_got = 0;
+ tobj->gmt = gmt;
tobj->tv.tv_sec = sec;
tobj->tv.tv_usec = usec;
return time;
diff --git a/version.h b/version.h
index 9547e17bda..16458bc95e 100644
--- a/version.h
+++ b/version.h
@@ -2,7 +2,7 @@
#define RUBY_RELEASE_DATE "2009-02-02"
#define RUBY_VERSION_CODE 186
#define RUBY_RELEASE_CODE 20090202
-#define RUBY_PATCHLEVEL 316
+#define RUBY_PATCHLEVEL 317
#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8