aboutsummaryrefslogtreecommitdiffstats
path: root/filter/e-filter-input.c
diff options
context:
space:
mode:
Diffstat (limited to 'filter/e-filter-input.c')
-rw-r--r--filter/e-filter-input.c29
1 files changed, 17 insertions, 12 deletions
diff --git a/filter/e-filter-input.c b/filter/e-filter-input.c
index a8d6123905..9166d9272f 100644
--- a/filter/e-filter-input.c
+++ b/filter/e-filter-input.c
@@ -70,11 +70,13 @@ filter_input_finalize (GObject *object)
static gboolean
filter_input_validate (EFilterElement *element,
- GtkWindow *error_parent)
+ EError **error)
{
EFilterInput *input = E_FILTER_INPUT (element);
gboolean valid = TRUE;
+ g_warn_if_fail (error == NULL || *error == NULL);
+
if (input->values && !strcmp (input->type, "regex")) {
const gchar *pattern;
regex_t regexpat;
@@ -83,17 +85,20 @@ filter_input_validate (EFilterElement *element,
pattern = input->values->data;
if ((regerr = regcomp (&regexpat, pattern, REG_EXTENDED | REG_NEWLINE | REG_ICASE))) {
- gsize reglen;
- gchar *regmsg;
-
- /* regerror gets called twice to get the full error string
- length to do proper posix error reporting */
- reglen = regerror (regerr, &regexpat, 0, 0);
- regmsg = g_malloc0 (reglen + 1);
- regerror (regerr, &regexpat, regmsg, reglen);
-
- e_error_run (error_parent, "filter:bad-regexp", pattern, regmsg, NULL);
- g_free (regmsg);
+ if (error) {
+ gsize reglen;
+ gchar *regmsg;
+
+ /* regerror gets called twice to get the full error string
+ length to do proper posix error reporting */
+ reglen = regerror (regerr, &regexpat, 0, 0);
+ regmsg = g_malloc0 (reglen + 1);
+ regerror (regerr, &regexpat, regmsg, reglen);
+
+ *error = e_error_new ("filter:bad-regexp",
+ pattern, regmsg, NULL);
+ g_free (regmsg);
+ }
valid = FALSE;
}