From 912e4ea3cbda2e5befd99b6a5984777abc968757 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 19 Jul 2005 19:05:19 +0000 Subject: [PATCH] Avoid an unnecessary strlen if len is -1. (#169692, Benoit Dejean) 2005-07-19 Matthias Clasen * glib/gstring.c (g_string_chunk_insert_len): Avoid an unnecessary strlen if len is -1. (#169692, Benoit Dejean) --- ChangeLog | 4 ++++ ChangeLog.pre-2-10 | 4 ++++ ChangeLog.pre-2-12 | 4 ++++ ChangeLog.pre-2-8 | 4 ++++ glib/gstring.c | 18 +++++++++++------- 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index b037658..8fb09ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-07-19 Matthias Clasen + * 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) diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index b037658..8fb09ee 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,9 @@ 2005-07-19 Matthias Clasen + * 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) diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index b037658..8fb09ee 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,5 +1,9 @@ 2005-07-19 Matthias Clasen + * 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) diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index b037658..8fb09ee 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,9 @@ 2005-07-19 Matthias Clasen + * 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) diff --git a/glib/gstring.c b/glib/gstring.c index 8cd007d..43125eb 100644 --- a/glib/gstring.c +++ b/glib/gstring.c @@ -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; } -- 2.7.4