[前][次][番号順一覧][スレッド一覧]

ruby-changes:3272

From: ko1@a...
Date: 28 Dec 2007 17:36:08 +0900
Subject: [ruby-changes:3272] akr - Ruby:r14765 (trunk): * time.c (make_time_t): verify mktime and timegm result.

akr	2007-12-28 17:35:52 +0900 (Fri, 28 Dec 2007)

  New Revision: 14765

  Modified files:
    trunk/ChangeLog
    trunk/time.c

  Log:
    * time.c (make_time_t): verify mktime and timegm result.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/time.c?r1=14765&r2=14764
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14765&r2=14764

Index: time.c
===================================================================
--- time.c	(revision 14764)
+++ time.c	(revision 14765)
@@ -826,40 +826,37 @@
     buf = *tptr;
     if (utc_p) {
 #if defined(HAVE_TIMEGM)
-	if ((t = timegm(&buf)) != -1)
-	    return t;
-#ifdef NEGATIVE_TIME_T
+	t = timegm(&buf);
+        if (t == (time_t)-1)
+#endif
+	t = search_time_t(&buf, utc_p);
 	if ((tmp = gmtime(&t)) &&
 	    tptr->tm_year == tmp->tm_year &&
 	    tptr->tm_mon == tmp->tm_mon &&
 	    tptr->tm_mday == tmp->tm_mday &&
 	    tptr->tm_hour == tmp->tm_hour &&
 	    tptr->tm_min == tmp->tm_min &&
-	    tptr->tm_sec == tmp->tm_sec
-	)
+	    tptr->tm_sec == tmp->tm_sec) {
 	    return t;
-#endif
-#endif
-	return search_time_t(&buf, utc_p);
+        }
     }
     else {
 #if defined(HAVE_MKTIME)
-	if ((t = mktime(&buf)) != -1)
-	    return t;
-#ifdef NEGATIVE_TIME_T
+	t = mktime(&buf);
+        if (t == (time_t)-1)
+#endif
+	t = search_time_t(&buf, utc_p);
 	if ((tmp = localtime(&t)) &&
 	    tptr->tm_year == tmp->tm_year &&
 	    tptr->tm_mon == tmp->tm_mon &&
 	    tptr->tm_mday == tmp->tm_mday &&
 	    tptr->tm_hour == tmp->tm_hour &&
 	    tptr->tm_min == tmp->tm_min &&
-	    tptr->tm_sec == tmp->tm_sec
-	)
+	    tptr->tm_sec == tmp->tm_sec) {
             return t;
-#endif
-#endif
-	return search_time_t(&buf, utc_p);
+        }
     }
+    rb_raise(rb_eArgError, "couldn't generate a time");
 }
 
 static VALUE
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14764)
+++ ChangeLog	(revision 14765)
@@ -1,3 +1,7 @@
+Fri Dec 28 17:33:44 2007  Tanaka Akira  <akr@f...>
+
+	* time.c (make_time_t): verify mktime and timegm result.
+
 Fri Dec 28 16:36:33 2007  NARUSE, Yui  <naruse@a...>
 
 	* lib/resolv.rb (Resolv::DNS#each_address): now returns IPv6 address.

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]