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