summaryrefslogtreecommitdiff
path: root/glib
diff options
context:
space:
mode:
authorManish Singh <yosh@src.gnome.org>1998-01-29 08:00:28 +0000
committerManish Singh <yosh@src.gnome.org>1998-01-29 08:00:28 +0000
commit89a5c21c077b5b8c43107aff44942b65bb6d27f7 (patch)
tree8233b21878260ac2f6bc28fa9aa06d8910a7624a /glib
parent4fb20bdbcc488413a770c47238e0e5b2a17b657b (diff)
downloadgtk+-89a5c21c077b5b8c43107aff44942b65bb6d27f7.tar.gz
The list sort functions compared things backwards. Fixed.
The list iterator macros now check for NULL args -Yosh
Diffstat (limited to 'glib')
-rw-r--r--glib/ChangeLog7
-rw-r--r--glib/glib.h6
-rw-r--r--glib/glist.c4
-rw-r--r--glib/gslist.c4
-rw-r--r--glib/testglib.c8
5 files changed, 18 insertions, 11 deletions
diff --git a/glib/ChangeLog b/glib/ChangeLog
index 4d8c9927b2..5fb90e439a 100644
--- a/glib/ChangeLog
+++ b/glib/ChangeLog
@@ -1,3 +1,10 @@
+Wed Jan 28 23:53:27 PST 1998 Manish Singh <yosh@gimp.org>
+
+ * glist.c
+ * gslist.c
+ * testglib.c: the sort functions compared backwards. Fixed
+ * glib.h: list iterator macros now check for NULL pointers
+
Tue Jan 27 09:46:57 PST 1998 Manish Singh <yosh@gimp.org>
* gstring.c: g_string_prepend and g_string_prepend_c had
diff --git a/glib/glib.h b/glib/glib.h
index e929827799..257d5925ce 100644
--- a/glib/glib.h
+++ b/glib/glib.h
@@ -419,8 +419,8 @@ void g_list_foreach (GList *list,
GFunc func,
gpointer user_data);
-#define g_list_previous(list) (((GList *)list)->prev)
-#define g_list_next(list) (((GList *)list)->next)
+#define g_list_previous(list) ((list) ? (((GList *)list)->prev) : NULL)
+#define g_list_next(list) ((list) ? (((GList *)list)->next) : NULL)
/* Singly linked lists
*/
@@ -455,7 +455,7 @@ void g_slist_foreach (GSList *list,
GFunc func,
gpointer user_data);
-#define g_slist_next(list) (((GSList *)list)->next)
+#define g_slist_next(list) ((list) ? (((GSList *)list)->next) : NULL)
/* List Allocators
*/
diff --git a/glib/glist.c b/glib/glist.c
index 9af3c79a6c..a9aebff1f2 100644
--- a/glib/glist.c
+++ b/glib/glist.c
@@ -381,12 +381,12 @@ g_list_insert_sorted (GList *list,
return new_list;
}
- cmp = (*func) (tmp_list->data, data);
+ cmp = (*func) (data, tmp_list->data);
while ((tmp_list->next) && (cmp > 0))
{
tmp_list = tmp_list->next;
- cmp = (*func) (tmp_list->data, data);
+ cmp = (*func) (data, tmp_list->data);
}
if (cmp == 0)
diff --git a/glib/gslist.c b/glib/gslist.c
index f1a6fddaed..50e93e0ce7 100644
--- a/glib/gslist.c
+++ b/glib/gslist.c
@@ -358,13 +358,13 @@ g_slist_insert_sorted (GSList *list,
return new_list;
}
- cmp = (*func) (tmp_list->data, data);
+ cmp = (*func) (data, tmp_list->data);
while ((tmp_list->next) && (cmp > 0))
{
prev_list = tmp_list;
tmp_list = tmp_list->next;
- cmp = (*func) (tmp_list->data, data);
+ cmp = (*func) (data, tmp_list->data);
}
if (cmp == 0)
diff --git a/glib/testglib.c b/glib/testglib.c
index 74231b5ece..4dc782b07a 100644
--- a/glib/testglib.c
+++ b/glib/testglib.c
@@ -138,7 +138,7 @@ main (int argc,
for (i = 0; i < 10; i++)
{
t = g_list_nth (list, i);
- if (*((gint*) t->data) != (9 - i))
+ if (*((gint*) t->data) != i)
g_error ("Sorted insert failed");
}
@@ -156,7 +156,7 @@ main (int argc,
for (i = 0; i < 10; i++)
{
t = g_list_nth (list, i);
- if (*((gint*) t->data) != i)
+ if (*((gint*) t->data) != (9 - i))
g_error ("Sorted insert failed");
}
@@ -193,7 +193,7 @@ main (int argc,
for (i = 0; i < 10; i++)
{
st = g_slist_nth (slist, i);
- if (*((gint*) st->data) != (9 - i))
+ if (*((gint*) st->data) != i)
g_error ("Sorted insert failed");
}
@@ -211,7 +211,7 @@ main (int argc,
for (i = 0; i < 10; i++)
{
st = g_slist_nth (slist, i);
- if (*((gint*) st->data) != i)
+ if (*((gint*) st->data) != (9 - i))
g_error("Sorted insert failed");
}