From: cuz Date: Fri, 14 Jan 2005 18:40:33 +0000 (+0000) Subject: Fixed a bug (Report from Greg King) X-Git-Tag: V2.12.0~469 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8cd583d591aff4af8a3d2623a52f605f6addd47a;p=cc65 Fixed a bug (Report from Greg King) git-svn-id: svn://svn.cc65.org/cc65/trunk@3367 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/src/ld65/o65.c b/src/ld65/o65.c index c6c90b428..d2385be5a 100644 --- a/src/ld65/o65.c +++ b/src/ld65/o65.c @@ -135,7 +135,6 @@ struct O65Option { }; /* A o65 relocation table */ -#define RELOC_BLOCKSIZE 4096 typedef struct O65RelocTab O65RelocTab; struct O65RelocTab { unsigned Size; /* Size of the table */ @@ -480,10 +479,12 @@ static void O65RelocPutByte (O65RelocTab* R, unsigned B) /* Do we have enough space in the buffer? */ if (R->Fill == R->Size) { /* We need to grow the buffer */ - unsigned char* NewBuf = xmalloc (R->Size + RELOC_BLOCKSIZE); + unsigned NewSize = (R->Size == 0)? 1024 : R->Size * 2; + unsigned char* NewBuf = xmalloc (NewSize); memcpy (NewBuf, R->Buf, R->Size); xfree (R->Buf); - R->Buf = NewBuf; + R->Size = NewSize; + R->Buf = NewBuf; } /* Put the byte into the buffer */