aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2001-11-13 08:18:14 +0800
committerChris Toshok <toshok@src.gnome.org>2001-11-13 08:18:14 +0800
commit6f6b1c0af0b8a7bf1a87a0b2089a88059423da38 (patch)
tree084a369119b50b7dbe6fbce902d0ce3834d2e567 /addressbook/backend
parent10752c7a830ae7ac3a5ddad9192c3f464a281c4e (diff)
downloadgsoc2013-evolution-6f6b1c0af0b8a7bf1a87a0b2089a88059423da38.tar.gz
gsoc2013-evolution-6f6b1c0af0b8a7bf1a87a0b2089a88059423da38.tar.zst
gsoc2013-evolution-6f6b1c0af0b8a7bf1a87a0b2089a88059423da38.zip
[ Fixes Ximian bug #14843 ] don't crash if a subexpression wasn't filled
2001-11-12 Chris Toshok <toshok@ximian.com> [ Fixes Ximian bug #14843 ] * backend/pas/pas-backend-ldap.c (func_and): don't crash if a subexpression wasn't filled in. * backend/pas/pas-backend-ldap.c (func_or): same. svn path=/trunk/; revision=14678
Diffstat (limited to 'addressbook/backend')
-rw-r--r--addressbook/backend/pas/pas-backend-ldap.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/addressbook/backend/pas/pas-backend-ldap.c b/addressbook/backend/pas/pas-backend-ldap.c
index 3b0cb673af..0618f43092 100644
--- a/addressbook/backend/pas/pas-backend-ldap.c
+++ b/addressbook/backend/pas/pas-backend-ldap.c
@@ -1764,15 +1764,16 @@ func_and(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
if (argc > 0) {
int i;
- strings = g_new(char*, argc+3);
+ strings = g_new0(char*, argc+3);
strings[0] = g_strdup ("(&");
strings[argc+3 - 2] = g_strdup (")");
- strings[argc+3 - 1] = NULL;
for (i = 0; i < argc; i ++) {
GList *list_head = *list;
- strings[argc - i] = (*list)->data;
- *list = g_list_remove_link(*list, *list);
+ if (!list_head)
+ break;
+ strings[argc - i] = list_head->data;
+ *list = g_list_remove_link(list_head, list_head);
g_list_free_1(list_head);
}
@@ -1800,14 +1801,16 @@ func_or(struct _ESExp *f, int argc, struct _ESExpResult **argv, void *data)
if (argc > 0) {
int i;
- strings = g_new(char*, argc+3);
+ strings = g_new0(char*, argc+3);
strings[0] = g_strdup ("(|");
strings[argc+3 - 2] = g_strdup (")");
- strings[argc+3 - 1] = NULL;
+
for (i = 0; i < argc; i ++) {
GList *list_head = *list;
- strings[argc - i] = (*list)->data;
- *list = g_list_remove_link(*list, *list);
+ if (!list_head)
+ break;
+ strings[argc - i] = list_head->data;
+ *list = g_list_remove_link(list_head, list_head);
g_list_free_1(list_head);
}