Index: src/OFStream.m ================================================================== --- src/OFStream.m +++ src/OFStream.m @@ -314,10 +314,28 @@ @try { ret = [OFString stringWithCString: ret_c encoding: encoding length: ret_len]; + } @catch (OFException *e) { + /* + * Append data to cache to + * prevent loss of data due to + * wrong encoding. + */ + cache = [self + resizeMemory: cache + toSize: cacheLen + + len]; + + if (cache != NULL) + memcpy(cache + cacheLen, + tmp, len); + + cacheLen += len; + + @throw e; } @finally { [self freeMemory: ret_c]; } tmp2 = [self