diff --git a/ChangeLog b/ChangeLog index 85f5141a0..0b4a3ec50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-03-20 Richard Frith-Macdonald + + * Source/GSString.m: lossyCString_u() handle case where cString + contains more bytes than unicode string has characters. + 2002-03-19 Richard Frith-Macdonald * Source/GSString.m: lossyCString_c() fix in line with recent diff --git a/Source/GSString.m b/Source/GSString.m index 032ce3493..7cd81242c 100644 --- a/Source/GSString.m +++ b/Source/GSString.m @@ -1261,10 +1261,11 @@ lossyCString_c(ivars self) static inline const char* lossyCString_u(ivars self) { - unsigned l = self->_count; - unsigned char *r = (unsigned char*)_fastMallocBuffer(l + 1); + unsigned l = 0; + unsigned char *r = 0; - GSFromUnicode(&r, &l, self->_contents.u, l, defEnc, 0, GSUniTerminate); + GSFromUnicode(&r, &l, self->_contents.u, self->_count, defEnc, 0, + GSUniTemporary|GSUniTerminate); return (const char*)r; }