@@ -422,11 +422,10 @@ } else if (byteOrder != OF_BYTE_ORDER_NATIVE) swap = YES; s = &s_store; - s->cStringLength = length; s->cString = [self allocMemoryWithSize: (length * 4) + 1]; s->length = length; for (i = 0; i < length; i++) { char buffer[4]; @@ -438,27 +437,24 @@ case 1: s->cString[j++] = buffer[0]; break; case 2: s->isUTF8 = YES; - s->cStringLength++; memcpy(s->cString + j, buffer, 2); j += 2; break; case 3: s->isUTF8 = YES; - s->cStringLength += 2; memcpy(s->cString + j, buffer, 3); j += 3; break; case 4: s->isUTF8 = YES; - s->cStringLength += 3; memcpy(s->cString + j, buffer, 4); j += 4; break; @@ -467,14 +463,15 @@ exceptionWithClass: [self class]]; } } s->cString[j] = '\0'; + s->cStringLength = j; @try { s->cString = [self resizeMemory: s->cString - size: s->cStringLength + 1]; + size: j + 1]; } @catch (OFOutOfMemoryException *e) { /* We don't care, as we only tried to make it smaller */ } } @catch (id e) { [self release];