Memory management fix

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@21147 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
CaS 2005-04-23 07:56:26 +00:00
parent 47c3c55ff5
commit 43bb7fe17f
2 changed files with 9 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2005-04-23 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSData.m: Fix bug in memory management when serializing an
object over 65K in length.
2005-04-20 Richard Frith-Macdonald <rfm@gnu.org> 2005-04-20 Richard Frith-Macdonald <rfm@gnu.org>
* Source/NSConnection.m: * Source/NSConnection.m:

View file

@ -3268,7 +3268,7 @@ getBytes(void* dst, void* src, unsigned len, unsigned limit, unsigned *pos)
{ {
unsigned len; unsigned len;
gss32 ni; gss32 ni;
unsigned minimum; gsu32 minimum;
if (!*(void**)data) if (!*(void**)data)
{ {
@ -3299,7 +3299,7 @@ getBytes(void* dst, void* src, unsigned len, unsigned limit, unsigned *pos)
unsigned size; unsigned size;
unsigned count = atoi(++type); unsigned count = atoi(++type);
unsigned i; unsigned i;
unsigned minimum; gsu32 minimum;
while (isdigit(*type)) while (isdigit(*type))
{ {
@ -3401,7 +3401,7 @@ getBytes(void* dst, void* src, unsigned len, unsigned limit, unsigned *pos)
{ {
const char *name = *(Class*)data?GSNameFromClass(*(Class*)data):""; const char *name = *(Class*)data?GSNameFromClass(*(Class*)data):"";
gsu16 ln = (gsu16)strlen(name); gsu16 ln = (gsu16)strlen(name);
gsu16 minimum = length + ln + sizeof(gsu16); gsu32 minimum = length + ln + sizeof(gsu16);
gsu16 ni; gsu16 ni;
if (minimum > capacity) if (minimum > capacity)
@ -3424,7 +3424,7 @@ getBytes(void* dst, void* src, unsigned len, unsigned limit, unsigned *pos)
gsu16 ln = (name == 0) ? 0 : (gsu16)strlen(name); gsu16 ln = (name == 0) ? 0 : (gsu16)strlen(name);
const char *types = *(SEL*)data?GSTypesFromSelector(*(SEL*)data):""; const char *types = *(SEL*)data?GSTypesFromSelector(*(SEL*)data):"";
gsu16 lt = (types == 0) ? 0 : (gsu16)strlen(types); gsu16 lt = (types == 0) ? 0 : (gsu16)strlen(types);
gsu16 minimum = length + ln + lt + 2*sizeof(gsu16); gsu32 minimum = length + ln + lt + 2*sizeof(gsu16);
gsu16 ni; gsu16 ni;
if (minimum > capacity) if (minimum > capacity)