2003-04-02 Havoc Pennington <hp@redhat.com>
authorHavoc Pennington <hp@redhat.com>
Wed, 2 Apr 2003 21:52:38 +0000 (21:52 +0000)
committerHavoc Pennington <hp@redhat.com>
Wed, 2 Apr 2003 21:52:38 +0000 (21:52 +0000)
* dbus/dbus-string.c (set_length): fix a bug - we allocated max of
current alloc and needed new length, not max of the doubled
allocation and needed new length. Also, when building tests,
don't do the double-allocation stuff, just realloc every time.

ChangeLog
dbus/dbus-string.c

index e72e8a6..2340ba9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2003-04-02  Havoc Pennington  <hp@redhat.com>
 
+       * dbus/dbus-string.c (set_length): fix a bug - we allocated max of
+       current alloc and needed new length, not max of the doubled
+       allocation and needed new length. Also, when building tests, 
+       don't do the double-allocation stuff, just realloc every time.
+
+2003-04-02  Havoc Pennington  <hp@redhat.com>
+
        * dbus/dbus-sysdeps.c (_dbus_file_get_contents): include filenames
        in error messages
        (_dbus_string_get_dirname): new
index dd5781f..0bd754b 100644 (file)
@@ -361,8 +361,17 @@ set_length (DBusRealString *real,
       else
         new_allocated = real->allocated * 2;
 
+      /* if you change the code just above here, run the tests without
+       * the following before you commit
+       */
+#ifdef DBUS_BUILD_TESTS
+      new_allocated = 0; /* ensure a realloc every time so that we go
+                          * through all malloc failure codepaths
+                          */
+#endif
+      
       /* But be sure we always alloc at least space for the new length */
-      new_allocated = MAX (real->allocated, new_length + ALLOCATION_PADDING);
+      new_allocated = MAX (new_allocated, new_length + ALLOCATION_PADDING);
         
       new_str = dbus_realloc (real->str - real->align_offset, new_allocated);
       if (new_str == NULL)