[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