[macruby-changes] [3675] MacRuby/branches/icu/string.c

source_changes at macosforge.org source_changes at macosforge.org
Tue Mar 2 18:55:46 PST 2010


Revision: 3675
          http://trac.macosforge.org/projects/ruby/changeset/3675
Author:   lsansonetti at apple.com
Date:     2010-03-02 18:55:45 -0800 (Tue, 02 Mar 2010)
Log Message:
-----------
misc bug fixes

Modified Paths:
--------------
    MacRuby/branches/icu/string.c

Modified: MacRuby/branches/icu/string.c
===================================================================
--- MacRuby/branches/icu/string.c	2010-03-03 02:45:54 UTC (rev 3674)
+++ MacRuby/branches/icu/string.c	2010-03-03 02:55:45 UTC (rev 3675)
@@ -1215,37 +1215,42 @@
 
 /*
  *  call-seq:
- *     String.new(str="")   => new_str
+ *     str.replace(other_str)   => str
  *  
- *  Returns a new string object containing a copy of <i>str</i>.
+ *  Replaces the contents and taintedness of <i>str</i> with the corresponding
+ *  values in <i>other_str</i>.
+ *     
+ *     s = "hello"         #=> "hello"
+ *     s.replace "world"   #=> "world"
  */
 
 static VALUE
-rstr_initialize(VALUE self, SEL sel, int argc, VALUE *argv)
+rstr_replace(VALUE self, SEL sel, VALUE arg)
 {
-    if (argc > 0) {
-	assert(argc == 1);
-	str_replace(RSTR(self), argv[0]);
+    rstr_modify(self);
+    str_replace(RSTR(self), arg);
+    if (OBJ_TAINTED(arg)) {
+	OBJ_TAINT(self);
     }
     return self;
 }
 
 /*
  *  call-seq:
- *     str.replace(other_str)   => str
+ *     String.new(str="")   => new_str
  *  
- *  Replaces the contents and taintedness of <i>str</i> with the corresponding
- *  values in <i>other_str</i>.
- *     
- *     s = "hello"         #=> "hello"
- *     s.replace "world"   #=> "world"
+ *  Returns a new string object containing a copy of <i>str</i>.
  */
 
 static VALUE
-rstr_replace(VALUE self, SEL sel, VALUE arg)
+rstr_initialize(VALUE self, SEL sel, int argc, VALUE *argv)
 {
-    rstr_modify(self);
-    str_replace(RSTR(self), arg);
+    VALUE orig;
+    if (argc > 0 && rb_scan_args(argc, argv, "01", &orig) == 1) {
+	if (self != orig) {
+	    rstr_replace(self, 0, orig);
+	}
+    }
     return self;
 }
 
@@ -1776,6 +1781,9 @@
 {
     rb_str_t *newstr = str_dup(RSTR(self));
     str_concat_string(newstr, str_need_string(other));
+    if (OBJ_TAINTED(self) || OBJ_TAINTED(other)) {
+	OBJ_TAINT(newstr);
+    }
     return (VALUE)newstr;
 }
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100302/f4022fb4/attachment.html>


More information about the macruby-changes mailing list