* support/Util/dbuf.c: fixed bug #1489008 fix dbuf_c_str(),
authorborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 22 May 2006 19:47:32 +0000 (19:47 +0000)
committerborutr <borutr@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Mon, 22 May 2006 19:47:32 +0000 (19:47 +0000)
  second try. Thanks Stas Sergeev once more.

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4184 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
support/Util/dbuf.c

index 1c13a70c7ddb8d77b95da549785ec8aab50a5d8a..a58aafcb116883202080b6ac15db125117b1b4d4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-05-22 Borut Razem <borut.razem AT siol.net>
+
+       * support/Util/dbuf.c: fixed bug #1489008 fix dbuf_c_str(),
+         second try. Thanks Stas Sergeev once more.
+
 2006-05-21 Maarten Brock <sourceforge.brock AT dse.nl>
 
        * src/hc08/gen.c (transferAopAop): aop forced to stack was not restored,
index da52a61e2370d2184d447fd9910acd4424ee9ba1..5ee200ac6d1400102670a6917eae005e30a0efa4 100644 (file)
@@ -1,6 +1,6 @@
 /*
   dbuf.c - Dynamic buffer implementation
-  version 1.1.2, May 17th, 2006
+  version 1.1.2, May 22th, 2006
 
   Copyright (c) 2002-2006 Borut Razem
 
@@ -44,8 +44,10 @@ static int dbuf_expand(struct dbuf_s *dbuf, size_t size)
   if (dbuf->len + size > dbuf->alloc) {
     /* new_allocated_size = current_allocated_size * 2^n */
     /* can this be optimized? */
-    while (dbuf->len + size >= dbuf->alloc)
+    do {
       dbuf->alloc += dbuf->alloc;
+    }
+    while (dbuf->len + size > dbuf->alloc);
 
     if ((dbuf->buf = realloc(dbuf->buf, dbuf->alloc)) == NULL)
       return 0;
@@ -145,12 +147,8 @@ const char *dbuf_c_str(struct dbuf_s *dbuf)
   assert(dbuf->alloc != 0);
   assert(dbuf->buf != NULL);
 
-  /* only if not already null terminated */
-  if (dbuf->len == dbuf->alloc ||
-    ((char *)dbuf->buf)[dbuf->len] != '\0') {
-    dbuf_expand(dbuf, 1);
-    ((char *)dbuf->buf)[dbuf->len] = '\0';
-  }
+  dbuf_expand(dbuf, 1);
+  ((char *)dbuf->buf)[dbuf->len] = '\0';
 
   return dbuf->buf;
 }