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

ruby-changes:3688

From: ko1@a...
Date: Wed, 23 Jan 2008 11:53:45 +0900 (JST)
Subject: [ruby-changes:3688] nobu - Ruby:r15177 (trunk): * string.c (str_mod_check, str_nth, str_offset): consitfied.

nobu	2008-01-23 11:53:28 +0900 (Wed, 23 Jan 2008)

  New Revision: 15177

  Modified files:
    trunk/ChangeLog
    trunk/string.c

  Log:
    * string.c (str_mod_check, str_nth, str_offset): consitfied.
    
    * string.c (rb_str_dump): dump in ASCII-8BIT always.


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

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 15176)
+++ ChangeLog	(revision 15177)
@@ -1,3 +1,9 @@
+Wed Jan 23 11:53:26 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (str_mod_check, str_nth, str_offset): consitfied.
+
+	* string.c (rb_str_dump): dump in ASCII-8BIT always.
+
 Wed Jan 23 10:18:10 2008  Yukihiro Matsumoto  <matz@r...>
 
 	* eval_method.c (rb_export_method): set ruby_vm_redefined_flag for
Index: string.c
===================================================================
--- string.c	(revision 15176)
+++ string.c	(revision 15177)
@@ -228,7 +228,7 @@
 }
 
 static inline void
-str_mod_check(VALUE s, char *p, long len)
+str_mod_check(VALUE s, const char *p, long len)
 {
     if (RSTRING_PTR(s) != p || RSTRING_LEN(s) != len){
 	rb_raise(rb_eRuntimeError, "string modified");
@@ -839,19 +839,19 @@
 }
 
 static char*
-str_nth(char *p, char *e, int nth, rb_encoding *enc, int singlebyte)
+str_nth(const char *p, const char *e, int nth, rb_encoding *enc, int singlebyte)
 {
     if (singlebyte)
 	p += nth;
     else
 	p = rb_enc_nth(p, e, nth, enc);
     if (!p) return 0;
-    if (p > e) return e;
-    return p;
+    if (p > e) p = e;
+    return (char *)p;
 }
 
 static int
-str_offset(char *p, char *e, int nth, rb_encoding *enc, int singlebyte)
+str_offset(const char *p, const char *e, int nth, rb_encoding *enc, int singlebyte)
 {
     const char *pp = str_nth(p, e, nth, enc, singlebyte);
     if (!pp) return e - p;
@@ -3263,16 +3263,15 @@
 rb_str_dump(VALUE str)
 {
     rb_encoding *enc0 = rb_enc_get(str);
-    rb_encoding *enc = rb_enc_from_index(0);
     long len;
-    char *p, *pend;
+    const char *p, *pend;
     char *q, *qend;
     VALUE result;
 
     len = 2;			/* "" */
     p = RSTRING_PTR(str); pend = p + RSTRING_LEN(str);
     while (p < pend) {
-	char c = *p++;
+	unsigned char c = *p++;
 	switch (c) {
 	  case '"':  case '\\':
 	  case '\n': case '\r':
@@ -3286,11 +3285,11 @@
 	    break;
 
 	  default:
-	    if (rb_enc_isprint(c, enc)) {
+	    if (ISPRINT(c)) {
 		len++;
 	    }
 	    else {
-		len += 4;		/* \nnn */
+		len += 4;		/* \xNN */
 	    }
 	    break;
 	}
@@ -3306,7 +3305,7 @@
 
     *q++ = '"';
     while (p < pend) {
-	char c = *p++;
+	unsigned char c = *p++;
 
 	if (c == '"' || c == '\\') {
 	    *q++ = '\\';
@@ -3348,19 +3347,19 @@
 	    *q++ = '\\';
 	    *q++ = 'e';
 	}
-	else if (rb_enc_isprint(c, enc)) {
+	else if (ISPRINT(c)) {
 	    *q++ = c;
 	}
 	else {
 	    *q++ = '\\';
-	    sprintf(q, "x%02X", c&0xff);
+	    sprintf(q, "x%02X", c);
 	    q += 3;
 	}
     }
     *q++ = '"';
     if (!rb_enc_asciicompat(enc0)) {
 	sprintf(q, ".force_encoding(\"%s\")", enc0->name);
-	enc0 = enc;
+	enc0 = rb_enc_from_index(0);
     }
 
     OBJ_INFECT(result, str);

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

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