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

ruby-changes:3748

From: ko1@a...
Date: Fri, 25 Jan 2008 21:50:27 +0900 (JST)
Subject: [ruby-changes:3748] akr - Ruby:r15237 (trunk): * string.c (rb_str_buf_cat_ascii): use rb_enc_cr_str_buf_cat.

akr	2008-01-25 21:50:12 +0900 (Fri, 25 Jan 2008)

  New Revision: 15237

  Modified files:
    trunk/ChangeLog
    trunk/string.c

  Log:
    * string.c (rb_str_buf_cat_ascii): use rb_enc_cr_str_buf_cat.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/string.c?r1=15237&r2=15236&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=15237&r2=15236&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15236)
+++ ChangeLog	(revision 15237)
@@ -1,3 +1,7 @@
+Fri Jan 25 21:49:36 2008  Tanaka Akira  <akr@f...>
+
+	* string.c (rb_str_buf_cat_ascii): use rb_enc_cr_str_buf_cat.
+
 Fri Jan 25 19:38:45 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* common.mk (version.$(OBJEXT)): depends on $(srcdir)/revision.h.
Index: string.c
===================================================================
--- string.c	(revision 15236)
+++ string.c	(revision 15237)
@@ -1116,26 +1116,6 @@
     return rb_str_cat(str, ptr, strlen(ptr));
 }
 
-VALUE
-rb_str_buf_cat_ascii(VALUE str, const char *ptr)
-{
-    rb_encoding *enc = rb_enc_get(str);
-    if (rb_enc_asciicompat(enc)) {
-        return rb_str_buf_cat(str, ptr, strlen(ptr));
-    }
-    else {
-        char *buf = ALLOCA_N(char, rb_enc_mbmaxlen(enc));
-        while (*ptr) {
-            int c = (unsigned char)*ptr;
-            int len = rb_enc_codelen(c, enc);
-            rb_enc_mbcput(c, buf, enc);
-            rb_str_buf_cat(str, buf, len);
-            ptr++;
-        }
-        return str;
-    }
-}
-
 static VALUE
 rb_enc_cr_str_buf_cat(VALUE str, const char *ptr, long len,
     int ptr_encindex, int ptr_cr, int *ptr_cr_ret)
@@ -1257,6 +1237,30 @@
 }
 
 VALUE
+rb_str_buf_cat_ascii(VALUE str, const char *ptr)
+{
+    /* ptr must reference NUL terminated ASCII string. */
+    int encindex = ENCODING_GET(str);
+    rb_encoding *enc = rb_enc_from_index(encindex);
+    if (rb_enc_asciicompat(enc)) {
+        return rb_enc_cr_str_buf_cat(str, ptr, strlen(ptr),
+            encindex, ENC_CODERANGE_7BIT, 0);
+    }
+    else {
+        char *buf = ALLOCA_N(char, rb_enc_mbmaxlen(enc));
+        while (*ptr) {
+            int c = (unsigned char)*ptr;
+            int len = rb_enc_codelen(c, enc);
+            rb_enc_mbcput(c, buf, enc);
+            rb_enc_cr_str_buf_cat(str, buf, len,
+                encindex, ENC_CODERANGE_VALID, 0);
+            ptr++;
+        }
+        return str;
+    }
+}
+
+VALUE
 rb_str_buf_append(VALUE str, VALUE str2)
 {
     int str2_cr;

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

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