diff options
Diffstat (limited to 'mixlib/mix_predicate_list.c')
-rw-r--r-- | mixlib/mix_predicate_list.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/mixlib/mix_predicate_list.c b/mixlib/mix_predicate_list.c index 3e4fe08..42f6ea6 100644 --- a/mixlib/mix_predicate_list.c +++ b/mixlib/mix_predicate_list.c @@ -85,13 +85,19 @@ mix_predicate_list_add (mix_predicate_list_t *list, mix_predicate_t *predicate) (void)mix_predicate_eval (predicate, list->vm); } -void +gboolean mix_predicate_list_remove (mix_predicate_list_t *list, mix_predicate_t *predicate) { - g_return_if_fail (list != NULL); - g_return_if_fail (predicate != NULL); - list->predicates = g_slist_remove (list->predicates, predicate); + g_return_val_if_fail (list != NULL, FALSE); + g_return_val_if_fail (predicate != NULL, FALSE); + if (g_slist_find (list->predicates, predicate)) + { + list->predicates = g_slist_remove (list->predicates, predicate); + return TRUE; + } + else + return FALSE; } void |