forked from osmocom/wireshark
tvbparse: fix memleak
Use same wmem_epan_scope() as "w" (tvbparse_wanted_t). Change-Id: I73fdb1fb3b55a91b7bb0fc36e435024c6f0b3d73 Ping-Bug: 12790 Reviewed-on: https://code.wireshark.org/review/17361 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
This commit is contained in:
parent
16b7128d1a
commit
0bae8424fe
|
@ -433,6 +433,14 @@ static int cond_one_of(tvbparse_t* tt, const int offset, const tvbparse_wanted_t
|
|||
return -1;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
tvbparse_wanted_cleanup_cb(wmem_allocator_t* allocator _U_, wmem_cb_event_t event _U_, void *user_data)
|
||||
{
|
||||
tvbparse_wanted_t* w = (tvbparse_wanted_t *)user_data;
|
||||
g_ptr_array_free(w->control.elems, TRUE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
tvbparse_wanted_t* tvbparse_set_oneof(const int id,
|
||||
const void* data,
|
||||
tvbparse_action_t before_cb,
|
||||
|
@ -448,6 +456,7 @@ tvbparse_wanted_t* tvbparse_set_oneof(const int id,
|
|||
w->before = before_cb;
|
||||
w->after = after_cb;
|
||||
w->control.elems = g_ptr_array_new();
|
||||
wmem_register_callback(wmem_epan_scope(), tvbparse_wanted_cleanup_cb, w);
|
||||
|
||||
va_start(ap,after_cb);
|
||||
|
||||
|
@ -625,6 +634,7 @@ tvbparse_wanted_t* tvbparse_set_seq(const int id,
|
|||
w->before = before_cb;
|
||||
w->after = after_cb;
|
||||
w->control.elems = g_ptr_array_new();
|
||||
wmem_register_callback(wmem_epan_scope(), tvbparse_wanted_cleanup_cb, w);
|
||||
|
||||
va_start(ap,after_cb);
|
||||
|
||||
|
|
Loading…
Reference in New Issue