diff options
Diffstat (limited to 'epan/dfilter/dfilter.c')
-rw-r--r-- | epan/dfilter/dfilter.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/epan/dfilter/dfilter.c b/epan/dfilter/dfilter.c index 23d136cf6f..895ae0411c 100644 --- a/epan/dfilter/dfilter.c +++ b/epan/dfilter/dfilter.c @@ -220,7 +220,7 @@ dfilter_compile(const gchar *text, dfilter_t **dfp) dfilter_t *dfilter; dfwork_t *dfw; gboolean failure = FALSE; - char *depr_test; + const char *depr_test; guint i; GPtrArray *deprecated = g_ptr_array_new(); @@ -262,7 +262,7 @@ dfilter_compile(const gchar *text, dfilter_t **dfp) } if (depr_test) { - g_ptr_array_add(deprecated, depr_test); + g_ptr_array_add(deprecated, g_strdup(depr_test)); } /* Give the token to the parser */ @@ -306,6 +306,10 @@ dfilter_compile(const gchar *text, dfilter_t **dfp) * it and set *dfp to NULL */ if (dfw->st_root == NULL) { *dfp = NULL; + for (i = 0; i < deprecated->len; ++i) { + gchar* depr = g_ptr_array_index(deprecated,i); + g_free(depr); + } g_ptr_array_free(deprecated, TRUE); } else { @@ -350,6 +354,10 @@ FAILURE: if (dfw) { dfwork_free(dfw); } + for (i = 0; i < deprecated->len; ++i) { + gchar* depr = g_ptr_array_index(deprecated,i); + g_free(depr); + } g_ptr_array_free(deprecated, TRUE); dfilter_fail("Unable to parse filter string \"%s\".", text); *dfp = NULL; |