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

ruby-changes:29942

From: nobu <ko1@a...>
Date: Tue, 16 Jul 2013 13:32:20 +0900 (JST)
Subject: [ruby-changes:29942] nobu:r41994 (trunk): encoding.c: revert r41964

nobu	2013-07-16 13:32:09 +0900 (Tue, 16 Jul 2013)

  New Revision: 41994

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

  Log:
    encoding.c: revert r41964
    
    * encoding.c (enc_set_index): since r41967, old terminator is dealt
      with in str_fill_term().  should not consider it here because this
      function is called before any encoding is set.

  Modified files:
    trunk/ChangeLog
    trunk/encoding.c

Index: encoding.c
===================================================================
--- encoding.c	(revision 41993)
+++ encoding.c	(revision 41994)
@@ -752,14 +752,8 @@ rb_enc_get_index(VALUE obj) https://github.com/ruby/ruby/blob/trunk/encoding.c#L752
 }
 
 static void
-enc_set_index(VALUE obj, int oldidx, int idx, rb_encoding *enc)
+enc_set_index(VALUE obj, int idx)
 {
-    int termlen = rb_enc_mbminlen(enc);
-    int oldtermlen = rb_enc_mbminlen(rb_enc_from_index(oldidx));
-
-    if (oldtermlen < termlen && RB_TYPE_P(obj, T_STRING)) {
-	rb_str_fill_terminator(obj, termlen);
-    }
     if (idx < ENCODING_INLINE_MAX) {
 	ENCODING_SET_INLINED(obj, idx);
 	return;
@@ -772,14 +766,15 @@ void https://github.com/ruby/ruby/blob/trunk/encoding.c#L766
 rb_enc_set_index(VALUE obj, int idx)
 {
     rb_check_frozen(obj);
-    enc_set_index(obj, ENCODING_GET(obj), idx, must_encindex(idx));
+    must_encindex(idx);
+    enc_set_index(obj, idx);
 }
 
 VALUE
 rb_enc_associate_index(VALUE obj, int idx)
 {
     rb_encoding *enc;
-    int oldidx;
+    int oldidx, oldtermlen, termlen;
 
 /*    enc_check_capable(obj);*/
     rb_check_frozen(obj);
@@ -794,7 +789,12 @@ rb_enc_associate_index(VALUE obj, int id https://github.com/ruby/ruby/blob/trunk/encoding.c#L789
 	!rb_enc_asciicompat(enc)) {
 	ENC_CODERANGE_CLEAR(obj);
     }
-    enc_set_index(obj, oldidx, idx, enc);
+    termlen = rb_enc_mbminlen(enc);
+    oldtermlen = rb_enc_mbminlen(rb_enc_from_index(oldidx));
+    if (oldtermlen < termlen && RB_TYPE_P(obj, T_STRING)) {
+	rb_str_fill_terminator(obj, termlen);
+    }
+    enc_set_index(obj, idx);
     return obj;
 }
 
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 41993)
+++ ChangeLog	(revision 41994)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Tue Jul 16 13:32:06 2013  Nobuyoshi Nakada  <nobu@r...>
+
+	* encoding.c (enc_set_index): since r41967, old terminator is dealt
+	  with in str_fill_term().  should not consider it here because this
+	  function is called before any encoding is set.
+
 Tue Jul 16 11:12:03 2013  Masaki Matsushita  <glass.saga@g...>
 
 	* proc.c (rb_block_arity): raise ArgumentError if no block given.
@@ -121,9 +127,6 @@ Mon Jul 15 02:21:39 2013  Nobuyoshi Naka https://github.com/ruby/ruby/blob/trunk/ChangeLog#L127
 	* encoding.c (enc_inspect): use PRIsVALUE to preserve the result
 	  encoding.
 
-	* encoding.c (enc_set_index): deal with terminator so that
-	  rb_enc_set_index also works.
-
 Sun Jul 14 23:21:47 2013  Tanaka Akira  <akr@f...>
 
 	* configure.in: Check __builtin_popcountl, __builtin_bswap32 and

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

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