]> git.sur5r.net Git - cc65/commitdiff
Fixed a bug (Report from Greg King)
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 14 Jan 2005 18:40:33 +0000 (18:40 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 14 Jan 2005 18:40:33 +0000 (18:40 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@3367 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ld65/o65.c

index c6c90b428aa516e677ae22c0763991ace88199b9..d2385be5a69ab0a22d04c9069b84ffe93a2db457 100644 (file)
@@ -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 */