diff options
Diffstat (limited to 'filter/e-filter-input.c')
-rw-r--r-- | filter/e-filter-input.c | 29 |
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 (®expat, 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, ®expat, 0, 0); - regmsg = g_malloc0 (reglen + 1); - regerror (regerr, ®expat, 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, ®expat, 0, 0); + regmsg = g_malloc0 (reglen + 1); + regerror (regerr, ®expat, regmsg, reglen); + + *error = e_error_new ("filter:bad-regexp", + pattern, regmsg, NULL); + g_free (regmsg); + } valid = FALSE; } |