Revision: 179 http://trac.macosforge.org/projects/ruby/changeset/179 Author: lsansonetti@apple.com Date: 2008-04-28 22:37:49 -0700 (Mon, 28 Apr 2008) Log Message: ----------- fixing more regressions Modified Paths: -------------- MacRuby/trunk/re.c MacRuby/trunk/sample/test.rb MacRuby/trunk/string.c Modified: MacRuby/trunk/re.c =================================================================== --- MacRuby/trunk/re.c 2008-04-29 01:53:23 UTC (rev 178) +++ MacRuby/trunk/re.c 2008-04-29 05:37:49 UTC (rev 179) @@ -2656,6 +2656,8 @@ int ascii_only = rb_enc_str_asciionly_p(str); s = RSTRING_CPTR(str); + if (s == NULL) + return str; send = s + RSTRING_CLEN(str); while (s < send) { c = rb_enc_ascget(s, send, &clen, enc); Modified: MacRuby/trunk/sample/test.rb =================================================================== --- MacRuby/trunk/sample/test.rb 2008-04-29 01:53:23 UTC (rev 178) +++ MacRuby/trunk/sample/test.rb 2008-04-29 05:37:49 UTC (rev 179) @@ -1872,7 +1872,7 @@ def valid_syntax?(code, fname) p fname - code.force_encoding("ascii-8bit") + #code.force_encoding("ascii-8bit") code = code.sub(/\A(?:\s*\#.*$)*(\n)?/n) { "#${"\n" if $1 && !$2}BEGIN{return true}\n" } Modified: MacRuby/trunk/string.c =================================================================== --- MacRuby/trunk/string.c 2008-04-29 01:53:23 UTC (rev 178) +++ MacRuby/trunk/string.c 2008-04-29 05:37:49 UTC (rev 179) @@ -1794,7 +1794,7 @@ p[len] = '\0'; ptr = p; } - CFStringAppendCString((CFMutableStringRef)str, ptr, kCFStringEncodingUTF8); + CFStringAppendCString((CFMutableStringRef)str, ptr, kCFStringEncodingASCII); /* FIXME ptr might be a bytestring */ #else long capa, total; @@ -2401,6 +2401,8 @@ str1 = str2; str2 = tmp; } + if (RSTRING_CLEN(str1) == 0) + return RSTRING_CLEN(str2) == 0 ? Qtrue : Qfalse; if (CFEqual((CFTypeRef)str1, (CFTypeRef)str2)) return Qtrue; #else @@ -4345,11 +4347,8 @@ { rb_encoding *enc = STR_ENC_GET(str); const char *p, *pend; - VALUE result = rb_str_buf_new2(""); + VALUE result; - if (!rb_enc_asciicompat(enc)) enc = rb_usascii_encoding(); - rb_enc_associate(result, enc); - str_cat_char(result, '"', enc); #if WITH_OBJC if (rb_objc_str_is_bytestring(str)) { p = (const char *)RSTRING_PTR(str); @@ -4359,9 +4358,15 @@ p = RSTRING_CPTR(str); pend = p + RSTRING_CLEN(str); } + if (p == NULL) + return rb_str_new2("\"\""); #else p = RSTRING_PTR(str); pend = RSTRING_END(str); #endif + result = rb_str_buf_new2(""); + if (!rb_enc_asciicompat(enc)) enc = rb_usascii_encoding(); + rb_enc_associate(result, enc); + str_cat_char(result, '"', enc); while (p < pend) { int c; int n;