From 43bb7fe17f1ded57956db1aed961b2a5af3d0c9a Mon Sep 17 00:00:00 2001 From: CaS Date: Sat, 23 Apr 2005 07:56:26 +0000 Subject: [PATCH] Memory management fix git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@21147 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSData.m | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index a3bb834ce..2d86f35b1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-04-23 Richard Frith-Macdonald + + * Source/NSData.m: Fix bug in memory management when serializing an + object over 65K in length. + 2005-04-20 Richard Frith-Macdonald * Source/NSConnection.m: diff --git a/Source/NSData.m b/Source/NSData.m index d33d7c6fb..4d66630b1 100644 --- a/Source/NSData.m +++ b/Source/NSData.m @@ -3268,7 +3268,7 @@ getBytes(void* dst, void* src, unsigned len, unsigned limit, unsigned *pos) { unsigned len; gss32 ni; - unsigned minimum; + gsu32 minimum; if (!*(void**)data) { @@ -3299,7 +3299,7 @@ getBytes(void* dst, void* src, unsigned len, unsigned limit, unsigned *pos) unsigned size; unsigned count = atoi(++type); unsigned i; - unsigned minimum; + gsu32 minimum; 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):""; gsu16 ln = (gsu16)strlen(name); - gsu16 minimum = length + ln + sizeof(gsu16); + gsu32 minimum = length + ln + sizeof(gsu16); gsu16 ni; 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); const char *types = *(SEL*)data?GSTypesFromSelector(*(SEL*)data):""; 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; if (minimum > capacity)