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

ruby-changes:2087

From: ko1@a...
Date: 30 Sep 2007 17:13:46 +0900
Subject: [ruby-changes:2087] nobu - Ruby:r13578 (trunk): * string.c (rb_str_append): always set encoding, and coderange

nobu	2007-09-30 17:13:28 +0900 (Sun, 30 Sep 2007)

  New Revision: 13578

  Modified files:
    trunk/ChangeLog
    trunk/include/ruby/encoding.h
    trunk/string.c

  Log:
    * string.c (rb_str_append): always set encoding, and coderange
      cache bits.
    
    * include/ruby/encoding.h (ENC_CODERANGE_SET): fixed a bug not to
      set chache bits.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=13578&r2=13577
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13578&r2=13577
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/include/ruby/encoding.h?r1=13578&r2=13577

Index: include/ruby/encoding.h
===================================================================
--- include/ruby/encoding.h	(revision 13577)
+++ include/ruby/encoding.h	(revision 13578)
@@ -31,7 +31,8 @@
 #define ENC_CODERANGE_BROKEN	(FL_USER12|FL_USER13)
 #define ENC_CODERANGE(obj) (RBASIC(obj)->flags & ENC_CODERANGE_MASK)
 #define ENC_CODERANGE_ASCIIONLY(obj) (ENC_CODERANGE(obj) == ENC_CODERANGE_SINGLE)
-#define ENC_CODERANGE_SET(obj,cr) (RBASIC(obj)->flags &= ~ENC_CODERANGE_MASK | (cr))
+#define ENC_CODERANGE_SET(obj,cr) (RBASIC(obj)->flags = \
+				   (RBASIC(obj)->flags & ~ENC_CODERANGE_MASK) | (cr))
 #define ENC_CODERANGE_CLEAR(obj) ENC_CODERANGE_SET(obj,0)
 
 
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13577)
+++ ChangeLog	(revision 13578)
@@ -1,3 +1,11 @@
+Sun Sep 30 17:12:53 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_str_append): always set encoding, and coderange
+	  cache bits.
+
+	* include/ruby/encoding.h (ENC_CODERANGE_SET): fixed a bug not to
+	  set chache bits.
+
 Sun Sep 30 11:52:11 2007  Tanaka Akira  <akr@f...>
 
 	* bootstraptest/runner.rb (pretty): don't show beginning empty line.
Index: string.c
===================================================================
--- string.c	(revision 13577)
+++ string.c	(revision 13578)
@@ -995,9 +995,12 @@
 rb_str_append(VALUE str, VALUE str2)
 {
     rb_encoding *enc;
+    int cr, cr2;
 
     StringValue(str2);
     enc = rb_enc_check(str, str2);
+    cr = ENC_CODERANGE(str);
+    if ((cr2 = ENC_CODERANGE(str2)) > cr) cr = cr2;
     rb_str_modify(str);
     if (RSTRING_LEN(str2) > 0) {
 	if (STR_ASSOC_P(str)) {
@@ -1008,11 +1011,12 @@
 	    RSTRING(str)->as.heap.len = len;
 	}
 	else {
-	    return rb_str_buf_append(str, str2);
+	    rb_str_buf_append(str, str2);
 	}
     }
     OBJ_INFECT(str, str2);
     rb_enc_associate(str, enc);
+    ENC_CODERANGE_SET(str, cr);
     return str;
 }
 

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

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