Re: bug in hashtable test
- From: Owen Taylor <otaylor redhat com>
- To: Miroslaw Dobrzanski-Neumann <mne mosaic-ag com>
- Cc: GTKDEV <gtk-devel-list gnome org>
- Subject: Re: bug in hashtable test
- Date: Fri, 8 Feb 2002 12:34:53 -0500 (EST)
Miroslaw Dobrzanski-Neumann <mne mosaic-ag com> writes:
> in lines 295, 299 is key and value memory freed end possibly reused by the
> libc. the call to g_hash_table_lookup_extended() in line 288 afterwards uses
> the invalidated key value intenally.
Fixed. Thanks,
Owen
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/glib/ChangeLog,v
retrieving revision 1.1009
diff -u -p -r1.1009 ChangeLog
--- ChangeLog 2002/02/08 17:08:00 1.1009
+++ ChangeLog 2002/02/08 17:33:58
@@ -1,3 +1,9 @@
+Fri Feb 8 12:32:14 2002 Owen Taylor <otaylor redhat com>
+
+ * tests/hash-test.c (second_hash_test): Fix access to
+ freed memory in test case (Miroslaw Dobrzanski-Neumann).
+ Re-enable and debug some commented out code.
+
2002-02-08 Michael Natterer <mitch gimp org>
* glib/gdir.c: g_dir_open: added g_return_val_if_fail() to prevent
Index: tests/hash-test.c
===================================================================
RCS file: /cvs/gnome/glib/tests/hash-test.c,v
retrieving revision 1.8
diff -u -p -r1.8 hash-test.c
--- tests/hash-test.c 2001/07/19 20:07:41 1.8
+++ tests/hash-test.c 2002/02/08 17:33:58
@@ -189,7 +189,6 @@ static void not_even_foreach (gpointer
g_assert (*_value != 0);
i = atoi (_key);
- g_assert (atoi (_key) > 0);
sprintf (val, "%d value", i);
g_assert (strcmp (_value, val) == 0);
@@ -214,7 +213,6 @@ static gboolean remove_even_foreach (gpo
g_assert (*_value != 0);
i = atoi (_key);
- g_assert (i > 0);
sprintf (val, "%d value", i);
g_assert (strcmp (_value, val) == 0);
@@ -262,17 +260,15 @@ static void second_hash_test (gboolean s
g_assert (atoi (v) == i);
}
- /**** future test stuff, yet to be debugged
sprintf (key, "%d", 3);
g_hash_table_remove (h, key);
g_hash_table_foreach_remove (h, remove_even_foreach, NULL);
g_hash_table_foreach (h, not_even_foreach, NULL);
- */
for (i=0; i<20; i++)
{
- if (((i % 2) == 0) || (i == 3))
- i++;
+ if ((i % 2) == 0 || i == 3)
+ continue;
sprintf (key, "%d", i);
g_assert (atoi(key) == i);
@@ -285,6 +281,8 @@ static void second_hash_test (gboolean s
(gpointer)&orig_key,
(gpointer)&orig_val);
g_assert (found);
+
+ g_hash_table_remove (h, key);
g_assert (orig_key != NULL);
g_assert (strcmp (key, orig_key) == 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]