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

ruby-changes:2496

From: ko1@a...
Date: 20 Nov 2007 21:50:46 +0900
Subject: [ruby-changes:2496] akr - Ruby:r13987 (trunk): * time.c (time_mload): ignore invalid digits in submicro.

akr	2007-11-20 21:50:29 +0900 (Tue, 20 Nov 2007)

  New Revision: 13987

  Modified files:
    trunk/ChangeLog
    trunk/time.c

  Log:
    * time.c (time_mload): ignore invalid digits in submicro.


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

Index: time.c
===================================================================
--- time.c	(revision 13986)
+++ time.c	(revision 13987)
@@ -2244,9 +2244,6 @@
         nsec = usec * 1000;
     }
     else {
-        unsigned char *ptr;
-        long len;
-
 	p &= ~(1UL<<31);
 	gmt        = (p >> 30) & 0x1;
 	tm.tm_year = (p >> 14) & 0xffff;
@@ -2262,15 +2259,22 @@
         nsec = usec * 1000;
 
         if (submicro != Qnil) {
+            unsigned char *ptr;
+            long len;
+            int digit;
             ptr = (unsigned char*)StringValuePtr(submicro);
             len = RSTRING_LEN(submicro);
             if (0 < len) {
-                nsec += (ptr[0] >> 4) * 100;
-                nsec += (ptr[0] & 0xf) * 10;
+                if (10 <= (digit = ptr[0] >> 4)) goto end_submicro;
+                nsec += digit * 100;
+                if (10 <= (digit = ptr[0] & 0xf)) goto end_submicro;
+                nsec += digit * 10;
             }
             if (1 < len) {
-                nsec += (ptr[1] >> 4);
+                if (10 <= (digit = ptr[1] >> 4)) goto end_submicro;
+                nsec += digit;
             }
+end_submicro: ;
         }
     }
     time_overflow_p(&sec, &nsec);
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13986)
+++ ChangeLog	(revision 13987)
@@ -1,3 +1,7 @@
+Tue Nov 20 21:46:46 2007  Tanaka Akira  <akr@f...>
+
+	* time.c (time_mload): ignore invalid digits in submicro.
+
 Tue Nov 20 20:33:32 2007  Koichi Sasada  <ko1@a...>
 
 	* include/ruby/ruby.h: rename RFloat#double_value -> float_value.

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

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