Index: src/OFStream.m ================================================================== --- src/OFStream.m +++ src/OFStream.m @@ -68,34 +68,21 @@ /* Look if there's a line or \0 in our cache */ if (cache != NULL) { for (i = 0; i < cache_len; i++) { if (OF_UNLIKELY(cache[i] == '\n' || cache[i] == '\0')) { - ret_c = [self allocMemoryWithSize: i + 1]; - memcpy(ret_c, cache, i); - ret_c[i] = '\0'; - - @try { - tmp = [self - allocMemoryWithSize: cache_len - - i - 1]; - } @catch (OFException *e) { - [self freeMemory: ret_c]; - @throw e; - } + ret = [OFString stringWithCString: cache + andLength: i]; + + tmp = [self allocMemoryWithSize: cache_len - + i - 1]; memcpy(tmp, cache + i + 1, cache_len - i - 1); [self freeMemory: cache]; cache = tmp; - cache_len = cache_len - i - 1; - - @try { - ret = [OFString - stringWithCString: ret_c]; - } @finally { - [self freeMemory: ret_c]; - } + cache_len -= i + 1; + return ret; } } } @@ -107,19 +94,12 @@ [self freeMemory: tmp]; if (cache == NULL) return nil; - ret_c = [self allocMemoryWithSize: cache_len + 1]; - memcpy(ret_c, cache, cache_len); - ret_c[cache_len] = '\0'; - - @try { - ret = [OFString stringWithCString: ret_c]; - } @finally { - [self freeMemory: ret_c]; - } + ret = [OFString stringWithCString: cache + andLength: cache_len]; [self freeMemory: cache]; cache = NULL; cache_len = 0;