glib r7409 - in trunk: . glib glib/tests tests
- From: hadess svn gnome org
- To: svn-commits-list gnome org
- Subject: glib r7409 - in trunk: . glib glib/tests tests
- Date: Thu, 28 Aug 2008 12:54:00 +0000 (UTC)
Author: hadess
Date: Thu Aug 28 12:53:59 2008
New Revision: 7409
URL: http://svn.gnome.org/viewvc/glib?rev=7409&view=rev
Log:
2008-08-28 Bastien Nocera <hadess hadess net>
Bug 548612 â g_strstr_len() should use memmem when available
* glib/tests/strfuncs.c (test_strstr):
* tests/string-test.c (main): Patch by Paolo Borelli
<pborelli katamail com> to move the tests to the right place,
and add more tests
* glib/gstrfuncs.c (g_strstr_len): Fix problem with memmem ignoring
nul-terminators in strings, and using the haystack_len instead
Modified:
trunk/ChangeLog
trunk/glib/gstrfuncs.c
trunk/glib/tests/strfuncs.c
trunk/tests/string-test.c
Modified: trunk/glib/gstrfuncs.c
==============================================================================
--- trunk/glib/gstrfuncs.c (original)
+++ trunk/glib/gstrfuncs.c Thu Aug 28 12:53:59 2008
@@ -2603,7 +2603,10 @@
else
{
#ifdef HAVE_MEMMEM
- return memmem (haystack, haystack_len, needle, strlen (needle));
+ size_t len;
+
+ len = MIN(haystack_len, strlen (haystack));
+ return memmem (haystack, len, needle, strlen (needle));
#else
const gchar *p = haystack;
gsize needle_len = strlen (needle);
Modified: trunk/glib/tests/strfuncs.c
==============================================================================
--- trunk/glib/tests/strfuncs.c (original)
+++ trunk/glib/tests/strfuncs.c Thu Aug 28 12:53:59 2008
@@ -556,10 +556,19 @@
res = g_strstr_len (haystack, 6, "FooBarFooBarFooBar");
g_assert (res == NULL);
+ res = g_strstr_len (haystack, 3, "Bar");
+ g_assert (res == NULL);
+
res = g_strstr_len (haystack, 6, "");
g_assert (res == haystack);
+ g_assert_cmpstr (res, ==, "FooBarFooBarFoo");
res = g_strstr_len (haystack, 6, "Bar");
+ g_assert (res == haystack + 3);
+ g_assert_cmpstr (res, ==, "BarFooBarFoo");
+
+ res = g_strstr_len (haystack, -1, "Bar");
+ g_assert (res == haystack + 3);
g_assert_cmpstr (res, ==, "BarFooBarFoo");
/* strrstr */
@@ -571,8 +580,10 @@
res = g_strrstr (haystack, "");
g_assert (res == haystack);
+ g_assert_cmpstr (res, ==, "FooBarFooBarFoo");
res = g_strrstr (haystack, "Bar");
+ g_assert (res == haystack + 9);
g_assert_cmpstr (res, ==, "BarFoo");
/* strrstr_len */
@@ -582,9 +593,26 @@
res = g_strrstr_len (haystack, 14, "FooBarFooBarFooBar");
g_assert (res == NULL);
+ res = g_strrstr_len (haystack, 3, "Bar");
+ g_assert (res == NULL);
+
res = g_strrstr_len (haystack, 14, "BarFoo");
+ g_assert (res == haystack + 3);
g_assert_cmpstr (res, ==, "BarFooBarFoo");
+ res = g_strrstr_len (haystack, 15, "BarFoo");
+ g_assert (res == haystack + 9);
+ g_assert_cmpstr (res, ==, "BarFoo");
+
+ res = g_strrstr_len (haystack, -1, "BarFoo");
+ g_assert (res == haystack + 9);
+ g_assert_cmpstr (res, ==, "BarFoo");
+
+ /* test case for strings with \0 in the middle */
+ *(haystack + 7) = '\0';
+ res = g_strstr_len (haystack, 15, "BarFoo");
+ g_assert (res == NULL);
+
g_free (haystack);
}
Modified: trunk/tests/string-test.c
==============================================================================
--- trunk/tests/string-test.c (original)
+++ trunk/tests/string-test.c Thu Aug 28 12:53:59 2008
@@ -307,11 +307,6 @@
g_assert (strcmp (tmp_string, "b a") == 0);
g_free (tmp_string);
- tmp_string = g_strdup (GLIB_TEST_STRING);
- g_assert (g_strstr_len (tmp_string, 4, "rado") == NULL);
- g_assert (g_strstr_len (tmp_string, -1, "rado") == tmp_string + 5);
- g_free (tmp_string);
-
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]