@@ -162,48 +162,44 @@ OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; OFArray *array = nil; size_t delim_len = strlen(delimiter); size_t i, last; - @try { - array = [[OFArray alloc] init]; - - for (i = 0, last = 0; i <= length; i++) { - if (OF_UNLIKELY(i == length || - !memcmp(string + i, delimiter, delim_len))) { - OFString *str; - char *tmp; - - /* - * We can't use [self allocWithSize:] here as - * self might be a @""-literal. - */ - if ((tmp = malloc(i - last + 1)) == NULL) - @throw [OFNoMemException - newWithClass: isa - andSize: i - last + 1]; - memcpy(tmp, string + last, i - last); - tmp[i - last] = '\0'; - @try { - str = [OFString stringWithCString: tmp]; - } @finally { - free(tmp); - } - - [array add: str]; - [pool releaseObjects]; - - i += delim_len - 1; - last = i + 1; - } - } - } @catch (OFException *e) { - if (array != nil) - [array release]; - @throw e; - } @finally { - [pool release]; - } - - return [array autorelease]; + array = [OFArray array]; + + for (i = 0, last = 0; i <= length; i++) { + if (OF_UNLIKELY(i == length || + !memcmp(string + i, delimiter, delim_len))) { + OFString *str; + char *tmp; + + /* + * We can't use [self allocWithSize:] here as + * self might be a @""-literal. + */ + if ((tmp = malloc(i - last + 1)) == NULL) + @throw [OFNoMemException + newWithClass: isa + andSize: i - last + 1]; + memcpy(tmp, string + last, i - last); + tmp[i - last] = '\0'; + @try { + str = [OFString stringWithCString: tmp]; + } @finally { + free(tmp); + } + + [array add: str]; + [array retain]; + [pool releaseObjects]; + + i += delim_len - 1; + last = i + 1; + } + } + + [array retain]; + [pool release]; + + return array; } @end