aboutsummaryrefslogtreecommitdiffstats
path: root/epan/tap.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2015-01-18 02:22:19 -0800
committerGuy Harris <guy@alum.mit.edu>2015-01-18 10:22:59 +0000
commitcfcbb286712ae392689e7cd1a640b57b611dd277 (patch)
treec41ab4705bb0b790da02bc8b29768b5879543474 /epan/tap.c
parentc60fb3038e4a449c5488a32574d838a6599cb33f (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.c12
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;
}
}