Modified: MacRuby/trunk/string.c (540 => 541)
--- MacRuby/trunk/string.c 2008-09-01 01:45:46 UTC (rev 540)
+++ MacRuby/trunk/string.c 2008-09-01 21:08:22 UTC (rev 541)
@@ -2958,7 +2958,8 @@
if (n == 0)
return;
- for (i = 0, charset = NULL; i < charset_count; i++) {
+ charset = NULL;
+ for (i = 0; i < charset_count; i++) {
VALUE s = charsets[i];
bool exclude;
const char *sptr, *p;
@@ -2976,8 +2977,9 @@
b = exclude ? sptr + 1 : sptr;
e = sptr + strlen(sptr) - 1;
subset = CFCharacterSetCreateMutable(NULL);
- if (p == NULL)
+ if (p == NULL) {
p = strchr(b, '-');
+ }
while (p != NULL) {
if (p > b && *(p - 1) != '\\' && *(p + 1) != '\0') {
CFCharacterSetAddCharactersInRange(subset,
@@ -2990,6 +2992,7 @@
(CFIndex)p - (CFIndex)b,
kCFStringEncodingUTF8,
false);
+ assert(substr != NULL);
CFCharacterSetAddCharactersInString(subset, substr);
CFRelease(substr);
}
@@ -3008,12 +3011,14 @@
(CFIndex)e - (CFIndex)b + 1,
kCFStringEncodingUTF8,
false);
+ assert(substr != NULL);
CFCharacterSetAddCharactersInString(subset, substr);
CFRelease(substr);
}
- if (exclude)
+ if (exclude) {
CFCharacterSetInvert(subset);
+ }
if (charset == NULL) {
charset = subset;
@@ -3031,7 +3036,7 @@
else {
CFCharacterSetRef subset;
subset = CFCharacterSetCreateWithCharactersInString(NULL,
- (CFStringRef)s);
+ (CFStringRef)s);
CFCharacterSetIntersect(charset, subset);
CFRelease(subset);
}