diff options
author | Guy Harris <guy@alum.mit.edu> | 2015-01-18 02:22:19 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2015-01-18 10:22:59 +0000 |
commit | cfcbb286712ae392689e7cd1a640b57b611dd277 (patch) | |
tree | c41ab4705bb0b790da02bc8b29768b5879543474 /epan/tap.c | |
parent | c60fb3038e4a449c5488a32574d838a6599cb33f (diff) |
Clean up ftype-conversion and dfilter error message string handling.
Have dfilter_compile() take an additional gchar ** argument, pointing to
a gchar * item that, on error, gets set to point to a g_malloc()ed error
string. That removes one bit of global state from the display filter
parser, and doesn't impose a fixed limit on the error message strings.
Have fvalue_from_string() and fvalue_from_unparsed() take a gchar **
argument, pointer to a gchar * item, rather than an error-reporting
function, and set the gchar * item to point to a g_malloc()ed error
string on an error.
Allow either gchar ** argument to be null; if the argument is null, no
error message is allocated or provided.
Change-Id: Ibd36b8aaa9bf4234aa6efa1e7fb95f7037493b4c
Reviewed-on: https://code.wireshark.org/review/6608
Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/tap.c')
-rw-r--r-- | epan/tap.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/epan/tap.c b/epan/tap.c index d2b6fe9183..ba4a1839e5 100644 --- a/epan/tap.c +++ b/epan/tap.c @@ -472,6 +472,7 @@ register_tap_listener(const char *tapname, void *tapdata, const char *fstring, tap_listener_t *tl; int tap_id; GString *error_string; + gchar *err_msg; tap_id=find_tap_id(tapname); if(!tap_id){ @@ -485,11 +486,12 @@ register_tap_listener(const char *tapname, void *tapdata, const char *fstring, tl->needs_redraw=TRUE; tl->flags=flags; if(fstring){ - if(!dfilter_compile(fstring, &tl->code)){ + if(!dfilter_compile(fstring, &tl->code, &err_msg)){ error_string = g_string_new(""); g_string_printf(error_string, "Filter \"%s\" is invalid - %s", - fstring, dfilter_error_msg); + fstring, err_msg); + g_free(err_msg); g_free(tl); return error_string; } @@ -514,6 +516,7 @@ set_tap_dfilter(void *tapdata, const char *fstring) { tap_listener_t *tl=NULL,*tl2; GString *error_string; + gchar *err_msg; if(!tap_listener_queue){ return NULL; @@ -538,11 +541,12 @@ set_tap_dfilter(void *tapdata, const char *fstring) } tl->needs_redraw=TRUE; if(fstring){ - if(!dfilter_compile(fstring, &tl->code)){ + if(!dfilter_compile(fstring, &tl->code, &err_msg)){ error_string = g_string_new(""); g_string_printf(error_string, "Filter \"%s\" is invalid - %s", - fstring, dfilter_error_msg); + fstring, err_msg); + g_free(err_msg); return error_string; } } |