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

ruby-changes:2546

From: ko1@a...
Date: 28 Nov 2007 09:52:13 +0900
Subject: [ruby-changes:2546] nobu - Ruby:r14037 (ruby_1_8): * bignum.c (rb_big2str0): do not clobber space for sign.

nobu	2007-11-28 09:51:44 +0900 (Wed, 28 Nov 2007)

  New Revision: 14037

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/bignum.c
    branches/ruby_1_8/sprintf.c
    branches/ruby_1_8/version.h

  Log:
    * bignum.c (rb_big2str0): do not clobber space for sign.
    
    * sprintf.c (remove_sign_bits): extends sign bit first.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=14037&r2=14036
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/sprintf.c?r1=14037&r2=14036
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/bignum.c?r1=14037&r2=14036
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.h?r1=14037&r2=14036

Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 14036)
+++ ruby_1_8/ChangeLog	(revision 14037)
@@ -1,3 +1,9 @@
+Wed Nov 28 09:51:42 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* bignum.c (rb_big2str0): do not clobber space for sign.
+
+	* sprintf.c (remove_sign_bits): extends sign bit first.
+
 Wed Nov 21 01:04:12 2007  Yukihiro Matsumoto  <matz@r...>
 
 	* object.c (nil_plus): remove unused function.  [ruby-core:13737]
Index: ruby_1_8/version.h
===================================================================
--- ruby_1_8/version.h	(revision 14036)
+++ ruby_1_8/version.h	(revision 14037)
@@ -1,7 +1,7 @@
 #define RUBY_VERSION "1.8.6"
-#define RUBY_RELEASE_DATE "2007-11-21"
+#define RUBY_RELEASE_DATE "2007-11-28"
 #define RUBY_VERSION_CODE 186
-#define RUBY_RELEASE_CODE 20071121
+#define RUBY_RELEASE_CODE 20071128
 #define RUBY_PATCHLEVEL 5000
 
 #define RUBY_VERSION_MAJOR 1
@@ -9,7 +9,7 @@
 #define RUBY_VERSION_TEENY 6
 #define RUBY_RELEASE_YEAR 2007
 #define RUBY_RELEASE_MONTH 11
-#define RUBY_RELEASE_DAY 21
+#define RUBY_RELEASE_DAY 28
 
 #ifdef RUBY_EXTERN
 RUBY_EXTERN const char ruby_version[];
Index: ruby_1_8/bignum.c
===================================================================
--- ruby_1_8/bignum.c	(revision 14036)
+++ ruby_1_8/bignum.c	(revision 14037)
@@ -709,7 +709,7 @@
 	while (k--) {
 	    s[--j] = ruby_digitmap[num % base];
 	    num /= base;
-	    if (!trim && j < 1) break;
+	    if (!trim && j <= 1) break;
 	    if (trim && i == 0 && num == 0) break;
 	}
     }
Index: ruby_1_8/sprintf.c
===================================================================
--- ruby_1_8/sprintf.c	(revision 14036)
+++ ruby_1_8/sprintf.c	(revision 14037)
@@ -18,6 +18,8 @@
 #include <math.h>
 
 #define BIT_DIGITS(N)   (((N)*146)/485 + 1)  /* log2(10) =~ 146/485 */
+#define BITSPERDIG (SIZEOF_BDIGITS*CHAR_BIT)
+#define EXTENDSIGN(n, l) (((~0 << (n)) >> (((n)*(l)) % BITSPERDIG)) & ~(~0 << (n)))
 
 static void fmt_setup _((char*,int,int,int,int));
 
@@ -36,7 +38,7 @@
 	}
     }
     else if (base == 8) {
-	if (*t == '3') t++;
+	*t |= EXTENDSIGN(3, strlen(t));
 	while (*t == '7') {
 	    t++;
 	}

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

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