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

ruby-changes:17499

From: naruse <ko1@a...>
Date: Fri, 15 Oct 2010 17:32:05 +0900 (JST)
Subject: [ruby-changes:17499] Ruby:r29504 (trunk): Revert "* sprintf.c (rb_str_format): fix: sprintf with hex format and"

naruse	2010-10-15 17:31:58 +0900 (Fri, 15 Oct 2010)

  New Revision: 29504

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29504

  Log:
    Revert "* sprintf.c (rb_str_format): fix: sprintf with hex format and"
    
    This reverts commit a160986d90cf90a86e01d60eddb04ffe0e584c36.
    Revert wrong commit.

  Modified files:
    trunk/ChangeLog
    trunk/sprintf.c
    trunk/test/ruby/test_sprintf.rb
    trunk/test/ruby/test_sprintf_comb.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29503)
+++ ChangeLog	(revision 29504)
@@ -5,11 +5,6 @@
 
 	* pack.c (pack_unpack): ditto.
 
-Thu Oct 14 09:46:28 2010  NARUSE, Yui  <naruse@r...>
-
-	* sprintf.c (rb_str_format): fix: sprintf with hex format and
-	  precision includes wrong dots.
-
 Fri Oct 15 16:40:37 2010  NARUSE, Yui  <naruse@r...>
 
 	* pack.c (pack_pack): fix more than one modifiers appear in the
Index: sprintf.c
===================================================================
--- sprintf.c	(revision 29503)
+++ sprintf.c	(revision 29504)
@@ -844,7 +844,7 @@
 		    }
 		    else {
 			s = nbuf;
-			if (v < 0 && !(flags & FPREC0)) {
+			if (v < 0) {
 			    dots = 1;
 			}
 			snprintf(fbuf, sizeof(fbuf), "%%l%c", *p == 'X' ? 'x' : *p);
@@ -892,8 +892,7 @@
 			tmp1 = tmp = rb_big2str0(val, base, RBIGNUM_SIGN(val));
 			s = RSTRING_PTR(tmp);
 			if (*s == '-') {
-			    if (!(flags & FPREC0))
-				dots = 1;
+			    dots = 1;
 			    if (base == 10) {
 				rb_warning("negative number for %%u specifier");
 			    }
@@ -926,11 +925,14 @@
 		    }
 		}
 		if (prefix && !prefix[1]) { /* octal */
-		    if (len == 1 && *s == '0') {
+		    if (dots) {
+			prefix = 0;
+		    }
+		    else if (len == 1 && *s == '0') {
 			len = 0;
 			if (flags & FPREC) prec--;
 		    }
-		    else if ((flags & FPREC) && (prec > len) && v >= 0) {
+		    else if ((flags & FPREC) && (prec > len)) {
 			prefix = 0;
 		    }
 		}
Index: test/ruby/test_sprintf.rb
===================================================================
--- test/ruby/test_sprintf.rb	(revision 29503)
+++ test/ruby/test_sprintf.rb	(revision 29504)
@@ -24,12 +24,12 @@
     assert_equal("0000", sprintf("%.4b", 0))
     assert_equal("0001", sprintf("%.4b", 1))
     assert_equal("0010", sprintf("%.4b", 2))
-    assert_equal("1111", sprintf("%.4b", -1))
+    assert_equal("..11", sprintf("%.4b", -1))
 
     assert_equal("  0000", sprintf("%6.4b", 0))
     assert_equal("  0001", sprintf("%6.4b", 1))
     assert_equal("  0010", sprintf("%6.4b", 2))
-    assert_equal("  1111", sprintf("%6.4b", -1))
+    assert_equal("  ..11", sprintf("%6.4b", -1))
 
     assert_equal("   0", sprintf("%#4b", 0))
     assert_equal(" 0b1", sprintf("%#4b", 1))
@@ -44,12 +44,12 @@
     assert_equal("0000", sprintf("%#.4b", 0))
     assert_equal("0b0001", sprintf("%#.4b", 1))
     assert_equal("0b0010", sprintf("%#.4b", 2))
-    assert_equal("0b1111", sprintf("%#.4b", -1))
+    assert_equal("0b..11", sprintf("%#.4b", -1))
 
     assert_equal("  0000", sprintf("%#6.4b", 0))
     assert_equal("0b0001", sprintf("%#6.4b", 1))
     assert_equal("0b0010", sprintf("%#6.4b", 2))
-    assert_equal("0b1111", sprintf("%#6.4b", -1))
+    assert_equal("0b..11", sprintf("%#6.4b", -1))
 
     assert_equal("+0", sprintf("%+b", 0))
     assert_equal("+1", sprintf("%+b", 1))
@@ -288,8 +288,6 @@
     b1 = (/\.\./ =~ s1) != nil
     b2 = (/\.\./ =~ s2) != nil
     assert(b1 == b2, "[ruby-dev:33224]")
-
-    assert_equal("ffffffff", sprintf("%.8x", -1))
   end
 
   def test_named
Index: test/ruby/test_sprintf_comb.rb
===================================================================
--- test/ruby/test_sprintf_comb.rb	(revision 29503)
+++ test/ruby/test_sprintf_comb.rb	(revision 29504)
@@ -190,7 +190,7 @@
         if digits.last != radix-1
           digits << (radix-1)
         end
-        sign = '..' unless precision
+        sign = '..'
       else
         sign = '-'
       end
@@ -222,8 +222,8 @@
       end
     end
     if type == 'o' && hs
-      if digits.empty? || digits.last != 0
-        prefix = '0'
+      if digits.empty? || digits.last != d
+        digits << d
       end
     end
 

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

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