aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-filter-search.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/camel-filter-search.c')
-rw-r--r--camel/camel-filter-search.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/camel/camel-filter-search.c b/camel/camel-filter-search.c
index 5663bf622f..c8c5290d37 100644
--- a/camel/camel-filter-search.c
+++ b/camel/camel-filter-search.c
@@ -615,16 +615,29 @@ gboolean camel_filter_search_match(CamelMimeMessage *message, CamelMessageInfo *
}
e_sexp_input_text (sexp, expression, strlen (expression));
- e_sexp_parse (sexp);
+ if (e_sexp_parse (sexp) == -1) {
+ if (!camel_exception_is_set(ex))
+ camel_exception_setv(ex, 1, _("Error executing filter search: %s: %s"), e_sexp_error(sexp), expression);
+ goto error;
+ }
result = e_sexp_eval (sexp);
-
+ if (result == NULL) {
+ if (!camel_exception_is_set(ex))
+ camel_exception_setv(ex, 1, _("Error executing filter search: %s: %s"), e_sexp_error(sexp), expression);
+ goto error;
+ }
+
if (result->type == ESEXP_RES_BOOL)
retval = result->value.bool;
else
retval = FALSE;
- e_sexp_unref(sexp);
e_sexp_result_free (result);
+ e_sexp_unref(sexp);
return retval;
+
+error:
+ e_sexp_unref(sexp);
+ return FALSE;
}