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

ruby-changes:2765

From: ko1@a...
Date: 17 Dec 2007 14:02:10 +0900
Subject: [ruby-changes:2765] matz - Ruby:r14256 (trunk): * string.c (tr_find): wrong condition fixed.

matz	2007-12-17 14:01:47 +0900 (Mon, 17 Dec 2007)

  New Revision: 14256

  Modified files:
    trunk/ChangeLog
    trunk/sprintf.c
    trunk/string.c

  Log:
    * string.c (tr_find): wrong condition fixed.
    
    * sprintf.c (rb_str_format): check encoding based on result, not
      the format string.
    
    * string.c (rb_str_upto): add encoding check.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=14256&r2=14255
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14256&r2=14255
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/sprintf.c?r1=14256&r2=14255

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14255)
+++ ChangeLog	(revision 14256)
@@ -1,3 +1,12 @@
+Mon Dec 17 13:56:53 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* string.c (tr_find): wrong condition fixed.
+
+	* sprintf.c (rb_str_format): check encoding based on result, not
+	  the format string.
+
+	* string.c (rb_str_upto): add encoding check.
+
 Mon Dec 17 12:21:25 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* Makefile.in (RUNRUBY): added RUNRUBYOPT.
Index: string.c
===================================================================
--- string.c	(revision 14255)
+++ string.c	(revision 14256)
@@ -1945,6 +1945,7 @@
     int n, excl;
 
     rb_scan_args(argc, argv, "11", &end, &exclusive);
+    rb_enc_check(beg, end);
     excl = RTEST(exclusive);
     succ = rb_intern("succ");
     StringValue(end);
@@ -3741,11 +3742,12 @@
     else {
 	VALUE v = INT2NUM(c);
 
-	if ((!del || !NIL_P(rb_hash_lookup(del, v))) &&
-	    (!nodel || NIL_P(rb_hash_lookup(nodel, v)))) {
-	    return Qtrue;
+	if (!del || NIL_P(rb_hash_lookup(del, v))) {
+	    return Qfalse;
 	}
-	return Qfalse;
+	if (nodel && NIL_P(rb_hash_lookup(nodel, v)))
+	    return Qfalse;
+	return Qtrue;
     }
 }
 
Index: sprintf.c
===================================================================
--- sprintf.c	(revision 14255)
+++ sprintf.c	(revision 14256)
@@ -296,6 +296,7 @@
     blen = 0;
     bsiz = 120;
     result = rb_str_buf_new(bsiz);
+    rb_enc_copy(result, fmt);
     buf = RSTRING_PTR(result);
 
     for (; p < end; p++) {
@@ -459,7 +460,7 @@
 		str = rb_obj_as_string(arg);
 		if (OBJ_TAINTED(str)) tainted = 1;
 		len = RSTRING_LEN(str);
-		enc = rb_enc_check(fmt, str);
+		enc = rb_enc_check(result, str);
 		if (flags&(FPREC|FWIDTH)) {
 		    slen = rb_enc_strlen(RSTRING_PTR(str),RSTRING_END(str),enc);
 		    if (slen < 0) {
@@ -497,6 +498,7 @@
 		    }
 		}
 		PUSH(RSTRING_PTR(str), len);
+		rb_enc_associate(result, enc);
 	    }
 	    break;
 

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

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