[macruby-changes] [176] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Sun Apr 27 14:23:00 PDT 2008


Revision: 176
          http://trac.macosforge.org/projects/ruby/changeset/176
Author:   lsansonetti at apple.com
Date:     2008-04-27 14:22:59 -0700 (Sun, 27 Apr 2008)

Log Message:
-----------
fixing some regressions

Modified Paths:
--------------
    MacRuby/trunk/parse.y
    MacRuby/trunk/string.c

Modified: MacRuby/trunk/parse.y
===================================================================
--- MacRuby/trunk/parse.y	2008-04-26 00:29:11 UTC (rev 175)
+++ MacRuby/trunk/parse.y	2008-04-27 21:22:59 UTC (rev 176)
@@ -7571,6 +7571,7 @@
 		      rb_enc_name(rb_enc_get(head)),
 		      rb_enc_name(rb_enc_get(tail)));
     }
+    RSTRING_SYNC(head);
     rb_str_buf_append(head, tail);
 }
 

Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c	2008-04-26 00:29:11 UTC (rev 175)
+++ MacRuby/trunk/string.c	2008-04-27 21:22:59 UTC (rev 176)
@@ -208,6 +208,7 @@
 	CFIndex datalen;
 	const UInt8 *dataptr;
 	CFStringRef bytestr;
+	const char *strptr;
 
 	data = (CFDataRef)s->cfdata;
 	datalen = CFDataGetLength(data);
@@ -220,8 +221,11 @@
 		false,
 		kCFAllocatorNull);
 	CFStringReplaceAll((CFMutableStringRef)str, (CFStringRef)bytestr);
-        if (memcmp((const char *)dataptr, (const char *)RSTRING_CPTR(str), 
-	    datalen) == 0) {
+	strptr = RSTRING_CPTR(str);
+	if ((const char *)dataptr == strptr
+	    || dataptr == NULL 
+	    || strptr == NULL
+	    || memcmp((const char *)dataptr, strptr, datalen) == 0) {
 	    s->cfdata = NULL;
 	}
     }
@@ -5125,6 +5129,8 @@
 trans_replace(CFMutableStringRef str, const CFRange *result_range, 
 	      CFStringRef substr, CFRange *search_range, int sflag)
 {
+    assert(result_range->location + result_range->length 
+	<= CFStringGetLength((CFStringRef)str));
     if (sflag == 0) {
 	long n;
 	for (n = result_range->location; 
@@ -5134,9 +5140,8 @@
     }
     else {
 	CFStringReplace(str, *result_range, substr);
-	search_range->length -= result_range->length 
-	    + (result_range->location - search_range->location) - 1;
 	search_range->location = result_range->location + 1;
+	search_range->length = RSTRING_CLEN(str) - search_range->location;
     }	    
 }
 
@@ -5253,7 +5258,7 @@
     
     if (RSTRING_CLEN(str) == 0)
        return Qnil;
-   
+  
     rb_str_modify(str);
 
     _ctx.orepl = repl; 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080427/f3c2b9df/attachment.html


More information about the macruby-changes mailing list