]> git.sur5r.net Git - cc65/commitdiff
Check for a size of zero in SB_CopyBuf to make the code somewhat faster.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 29 May 2010 21:23:34 +0000 (21:23 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 29 May 2010 21:23:34 +0000 (21:23 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4675 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/common/strbuf.c

index 4a489a708fb3887ae0968eb4cd221d9825c12fe8..320e912932ac86ca1c9a15979a522a22e38cc98e 100644 (file)
@@ -179,7 +179,7 @@ static void SB_CheapRealloc (StrBuf* B, unsigned NewSize)
 
     /* Allocate a fresh block */
     B->Buf = xmalloc (NewAllocated);
-
+               
     /* Remember the new block size */
     B->Allocated = NewAllocated;
 }
@@ -225,11 +225,13 @@ void SB_Terminate (StrBuf* B)
 
 void SB_CopyBuf (StrBuf* Target, const char* Buf, unsigned Size)
 /* Copy Buf to Target, discarding the old contents of Target */
-{
-    if (Target->Allocated < Size) {
-               SB_CheapRealloc (Target, Size);
+{    
+    if (Size) {
+        if (Target->Allocated < Size) {
+            SB_CheapRealloc (Target, Size);
+        }
+        memcpy (Target->Buf, Buf, Size);
     }
-    memcpy (Target->Buf, Buf, Size);
     Target->Len = Size;
 }