Avoid an unnecessary strlen if len is -1. (#169692, Benoit Dejean)
authorMatthias Clasen <mclasen@redhat.com>
Tue, 19 Jul 2005 19:05:19 +0000 (19:05 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Tue, 19 Jul 2005 19:05:19 +0000 (19:05 +0000)
2005-07-19  Matthias Clasen  <mclasen@redhat.com>

        * glib/gstring.c (g_string_chunk_insert_len): Avoid
        an unnecessary strlen if len is -1.  (#169692,
        Benoit Dejean)

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-8
glib/gstring.c

index b037658..8fb09ee 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2005-07-19  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gstring.c (g_string_chunk_insert_len): Avoid
+       an unnecessary strlen if len is -1.  (#169692, 
+       Benoit Dejean)
+
        * glib/gatomic.c (g_atomic_pointer_compare_and_exchange): 
        Fix g_atomic_pointer_compare_and_exchange on sparc64.
        (#167572, Gert Doering)
index b037658..8fb09ee 100644 (file)
@@ -1,5 +1,9 @@
 2005-07-19  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gstring.c (g_string_chunk_insert_len): Avoid
+       an unnecessary strlen if len is -1.  (#169692, 
+       Benoit Dejean)
+
        * glib/gatomic.c (g_atomic_pointer_compare_and_exchange): 
        Fix g_atomic_pointer_compare_and_exchange on sparc64.
        (#167572, Gert Doering)
index b037658..8fb09ee 100644 (file)
@@ -1,5 +1,9 @@
 2005-07-19  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gstring.c (g_string_chunk_insert_len): Avoid
+       an unnecessary strlen if len is -1.  (#169692, 
+       Benoit Dejean)
+
        * glib/gatomic.c (g_atomic_pointer_compare_and_exchange): 
        Fix g_atomic_pointer_compare_and_exchange on sparc64.
        (#167572, Gert Doering)
index b037658..8fb09ee 100644 (file)
@@ -1,5 +1,9 @@
 2005-07-19  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gstring.c (g_string_chunk_insert_len): Avoid
+       an unnecessary strlen if len is -1.  (#169692, 
+       Benoit Dejean)
+
        * glib/gatomic.c (g_atomic_pointer_compare_and_exchange): 
        Fix g_atomic_pointer_compare_and_exchange on sparc64.
        (#167572, Gert Doering)
index 8cd007d..43125eb 100644 (file)
@@ -218,16 +218,19 @@ g_string_chunk_insert_len (GStringChunk *chunk,
                           const gchar  *string, 
                           gssize        len)
 {
+  gssize size;
   gchar* pos;
 
   g_return_val_if_fail (chunk != NULL, NULL);
 
   if (len < 0)
-    len = strlen (string);
+    size = strlen (string);
+  else
+    size = len;
   
-  if ((chunk->storage_next + len + 1) > chunk->this_size)
+  if ((chunk->storage_next + size + 1) > chunk->this_size)
     {
-      gsize new_size = nearest_power (chunk->default_size, len + 1);
+      gsize new_size = nearest_power (chunk->default_size, size + 1);
 
       chunk->storage_list = g_slist_prepend (chunk->storage_list,
                                             g_new (gchar, new_size));
@@ -238,12 +241,13 @@ g_string_chunk_insert_len (GStringChunk *chunk,
 
   pos = ((gchar *) chunk->storage_list->data) + chunk->storage_next;
 
-  *(pos + len) = '\0';
+  *(pos + size) = '\0';
 
-  strncpy (pos, string, len);
-  len = strlen (pos);
+  strncpy (pos, string, size);
+  if (len > 0)
+    size = strlen (pos);
 
-  chunk->storage_next += len + 1;
+  chunk->storage_next += size + 1;
 
   return pos;
 }