[macruby-changes] [170] MacRuby/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Apr 25 14:50:50 PDT 2008
Revision: 170
http://trac.macosforge.org/projects/ruby/changeset/170
Author: lsansonetti at apple.com
Date: 2008-04-25 14:50:50 -0700 (Fri, 25 Apr 2008)
Log Message:
-----------
fixing some regressions
Modified Paths:
--------------
MacRuby/trunk/file.c
MacRuby/trunk/string.c
Modified: MacRuby/trunk/file.c
===================================================================
--- MacRuby/trunk/file.c 2008-04-24 02:54:51 UTC (rev 169)
+++ MacRuby/trunk/file.c 2008-04-25 21:50:50 UTC (rev 170)
@@ -2563,6 +2563,7 @@
FilePathValue(fname);
s = StringValuePtr(fname);
+
BUFINIT();
tainted = OBJ_TAINTED(fname);
@@ -2650,8 +2651,11 @@
#endif
else if (!is_absolute_path(s)) {
if (!NIL_P(dname)) {
+ long n;
file_expand_path(dname, Qnil, result);
BUFINIT();
+ n = RSTRING_CLEN(result);
+ BUFCHECK(n + 2 > buflen);
}
else {
char *dir = my_getcwd();
@@ -2751,6 +2755,7 @@
if (tainted) OBJ_TAINT(result);
rb_str_set_len(result, p - buf);
RSTRING_SYNC(result);
+
return result;
}
Modified: MacRuby/trunk/string.c
===================================================================
--- MacRuby/trunk/string.c 2008-04-24 02:54:51 UTC (rev 169)
+++ MacRuby/trunk/string.c 2008-04-25 21:50:50 UTC (rev 170)
@@ -1547,7 +1547,7 @@
{
#if WITH_OBJC
long n = CFStringGetLength((CFStringRef)str);
- CFStringRef substr;
+ CFStringRef substr, msubstr;
if (beg < 0)
beg += n;
if (beg > n || beg < 0)
@@ -1562,8 +1562,10 @@
substr = CFStringCreateWithSubstring(NULL, (CFStringRef)str,
CFRangeMake(beg, len));
}
- CFMakeCollectable((CFTypeRef)substr);
- return (VALUE)substr;
+ msubstr = (CFStringRef)CFStringCreateMutableCopy(NULL, 0, substr);
+ CFRelease(substr);
+ CFMakeCollectable(msubstr);
+ return (VALUE)msubstr;
#else
VALUE str2 = rb_str_new5(str, RSTRING_PTR(str)+beg, len);
@@ -1732,13 +1734,7 @@
if (slen != len) {
struct rb_objc_str_struct *s;
- if (len > slen) {
- CFStringPad((CFMutableStringRef)str, CFSTR(" "), len, 0);
- }
- else {
- CFStringDelete((CFMutableStringRef)str,
- CFRangeMake(len, slen - len));
- }
+ CFStringPad((CFMutableStringRef)str, CFSTR(" "), len, 0);
s = rb_objc_str_get_struct(str);
if (s != NULL && s->cfdata != NULL)
@@ -3865,6 +3861,8 @@
rb_backref_set(match);
#if WITH_OBJC
if (bang) {
+ RSTRING_SYNC(str);
+ RSTRING_SYNC(dest);
CFStringReplaceAll((CFMutableStringRef)str, (CFStringRef)dest);
}
else {
@@ -5248,6 +5246,8 @@
if (RSTRING_CLEN(str) == 0)
return Qnil;
+ rb_str_modify(str);
+
_ctx.orepl = repl;
_ctx.src = RSTRING_CPTR(src);
_ctx.repl = RSTRING_CPTR(repl);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080425/97afd952/attachment.html
More information about the macruby-changes
mailing list