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

ruby-changes:9167

From: yugui <ko1@a...>
Date: Sat, 13 Dec 2008 10:04:22 +0900 (JST)
Subject: [ruby-changes:9167] Ruby:r20704 (ruby_1_9_1): merges r20651 from trunk into ruby_1_9_1.

yugui	2008-12-13 10:03:33 +0900 (Sat, 13 Dec 2008)

  New Revision: 20704

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

  Log:
    merges r20651 from trunk into ruby_1_9_1.
    * string.c (rb_string_value_ptr, rb_to_id): do not use a side
      effect expression in RSTRING_PTR.
    * string.c (rb_str_split_m): simplified the argument of
      RSTRING_LEN.

  Modified files:
    branches/ruby_1_9_1/ChangeLog
    branches/ruby_1_9_1/string.c

Index: ruby_1_9_1/ChangeLog
===================================================================
--- ruby_1_9_1/ChangeLog	(revision 20703)
+++ ruby_1_9_1/ChangeLog	(revision 20704)
@@ -1,3 +1,11 @@
+Fri Dec 12 10:19:21 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* string.c (rb_string_value_ptr, rb_to_id): do not use a side
+	  effect expression in RSTRING_PTR.
+
+	* string.c (rb_str_split_m): simplified the argument of
+	  RSTRING_LEN.
+
 Thu Dec 11 23:48:00 2008  Tadayoshi Funaba  <tadf@d...>
 
 	* lib/cmath.rb (sqrt): should pass nan to the original method.
Index: ruby_1_9_1/string.c
===================================================================
--- ruby_1_9_1/string.c	(revision 20703)
+++ ruby_1_9_1/string.c	(revision 20704)
@@ -1240,7 +1240,8 @@
 char *
 rb_string_value_ptr(volatile VALUE *ptr)
 {
-    return RSTRING_PTR(rb_string_value(ptr));
+    VALUE str = rb_string_value(ptr);
+    return RSTRING_PTR(str);
 }
 
 char *
@@ -5433,8 +5434,9 @@
 	rb_ary_push(result, tmp);
     }
     if (NIL_P(limit) && lim == 0) {
-	while (RARRAY_LEN(result) > 0 &&
-	       RSTRING_LEN(RARRAY_PTR(result)[RARRAY_LEN(result)-1]) == 0)
+	long len;
+	while ((len = RARRAY_LEN(result)) > 0 &&
+	       (tmp = RARRAY_PTR(result)[len-1], RSTRING_LEN(tmp) == 0))
 	    rb_ary_pop(result);
     }
 
@@ -7007,8 +7009,9 @@
       default:
 	tmp = rb_check_string_type(name);
 	if (NIL_P(tmp)) {
+	    tmp = rb_inspect(name);
 	    rb_raise(rb_eTypeError, "%s is not a symbol",
-		     RSTRING_PTR(rb_inspect(name)));
+		     RSTRING_PTR(tmp));
 	}
 	name = tmp;
 	/* fall through */

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

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