diff --git a/epan/tpg.c b/epan/tpg.c index 4c6f26858a..aad97e5f19 100644 --- a/epan/tpg.c +++ b/epan/tpg.c @@ -28,7 +28,7 @@ #include "config.h" #include "tpg.h" -#include +#include #include extern guint32 tpg_ipv4(tvbparse_elem_t* e _U_) { @@ -47,13 +47,13 @@ extern tpg_parser_data_t* tpg_start(proto_tree* root_tree, int len, tvbparse_wanted_t* ignore, void* private_data) { - tpg_parser_data_t* tpg = ep_alloc(sizeof(tpg_parser_data_t)); + tpg_parser_data_t* tpg = wmem_new(wmem_packet_scope(), tpg_parser_data_t); tpg->private_data = private_data; tpg->tt = tvbparse_init(tvb,offset,len,tpg,ignore); - tpg->stack = ep_stack_new(); - ep_stack_push(tpg->stack,root_tree); - + tpg->stack = wmem_stack_new(wmem_packet_scope()); + wmem_stack_push(tpg->stack, root_tree); + return tpg; } diff --git a/epan/tpg.h b/epan/tpg.h index f71feef35f..fbe2a05ab6 100644 --- a/epan/tpg.h +++ b/epan/tpg.h @@ -32,10 +32,11 @@ #include #include #include +#include #include "ws_symbol_export.h" typedef struct _tpg_parser_data_t { - ep_stack_t stack; + wmem_stack_t *stack; tvbparse_t* tt; void* private_data; } tpg_parser_data_t; @@ -67,8 +68,8 @@ WS_DLL_PUBLIC guint32 tpg_ipv4(tvbparse_elem_t*); WS_DLL_PUBLIC guint8* tpg_ipv6(tvbparse_elem_t*); #define TPG_IPV6(i) tpg_ipv6((i)) -#define TPG_PUSH(tpg,pi,ett) ep_stack_push(((tpg_parser_data_t*)(tpg))->stack,proto_item_add_subtree((pi),(ett))) -#define TPG_POP(tpg) ep_stack_pop(((tpg_parser_data_t*)(tpg))->stack) ; +#define TPG_PUSH(tpg,pi,ett) wmem_stack_push(((tpg_parser_data_t*)(tpg))->stack,proto_item_add_subtree((pi),(ett))) +#define TPG_POP(tpg) wmem_stack_pop(((tpg_parser_data_t*)(tpg))->stack) ; #define TPG_ADD_STRING(tpg, hfid, elem) proto_tree_add_item(ep_stack_peek(((tpg_parser_data_t*)tpg)->stack), hfid, (elem)->tvb, (elem)->offset, (elem)->len, FALSE) #define TPG_ADD_BOOLEAN(tpg, hfid, elem) proto_tree_add_boolean(ep_stack_peek(((tpg_parser_data_t*)tpg)->stack), hfid, (elem)->tvb, (elem)->offset, (elem)->len, TRUE) diff --git a/epan/tvbparse.c b/epan/tvbparse.c index 64e8a38837..2084377130 100644 --- a/epan/tvbparse.c +++ b/epan/tvbparse.c @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -1250,7 +1251,7 @@ guint tvbparse_curr_offset(tvbparse_t* tt) { } static void execute_callbacks(tvbparse_t* tt, tvbparse_elem_t* curr) { - ep_stack_t stack = ep_stack_new(); + wmem_stack_t *stack = wmem_stack_new(wmem_packet_scope()); while (curr) { if(curr->wanted->before) { @@ -1261,7 +1262,7 @@ static void execute_callbacks(tvbparse_t* tt, tvbparse_elem_t* curr) { } if(curr->sub) { - ep_stack_push(stack,curr); + wmem_stack_push(stack, curr); curr = curr->sub; continue; } else { @@ -1273,8 +1274,8 @@ static void execute_callbacks(tvbparse_t* tt, tvbparse_elem_t* curr) { curr = curr->next; - while( !curr && ep_stack_peek(stack) ) { - curr = (tvbparse_elem_t *)ep_stack_pop(stack); + while( !curr && wmem_stack_count(stack) > 0 ) { + curr = (tvbparse_elem_t *)wmem_stack_pop(stack); #ifdef TVBPARSE_DEBUG if (TVBPARSE_DEBUG & TVBPARSE_DEBUG_CB) g_warning("execute_callbacks: AFTER: id=%i offset=%i len=%i",curr->id,curr->offset,curr->len); #endif @@ -1391,8 +1392,8 @@ struct _elem_tree_stack_frame { }; void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr) { - ep_stack_t stack = ep_stack_new(); - struct _elem_tree_stack_frame* frame = (struct _elem_tree_stack_frame *)ep_alloc(sizeof(struct _elem_tree_stack_frame)); + wmem_stack_t *stack = wmem_stack_new(wmem_packet_scope()); + struct _elem_tree_stack_frame* frame = wmem_new(wmem_packet_scope(), struct _elem_tree_stack_frame); proto_item* pi; frame->tree = tree; frame->elem = curr; @@ -1402,8 +1403,8 @@ void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr) { if(curr->sub) { frame->elem = curr; - ep_stack_push(stack,frame); - frame = (struct _elem_tree_stack_frame *)ep_alloc(sizeof(struct _elem_tree_stack_frame)); + wmem_stack_push(stack, frame); + frame = wmem_new(wmem_packet_scope(), struct _elem_tree_stack_frame); frame->tree = proto_item_add_subtree(pi,0); curr = curr->sub; continue; @@ -1411,8 +1412,8 @@ void tvbparse_tree_add_elem(proto_tree* tree, tvbparse_elem_t* curr) { curr = curr->next; - while( !curr && ep_stack_peek(stack) ) { - frame = (struct _elem_tree_stack_frame *)ep_stack_pop(stack); + while( !curr && wmem_stack_count(stack) > 0 ) { + frame = (struct _elem_tree_stack_frame *)wmem_stack_pop(stack); curr = frame->elem->next; }