diff --git a/epan/proto.c b/epan/proto.c index 683bafbd40..2a156b8d84 100644 --- a/epan/proto.c +++ b/epan/proto.c @@ -1113,15 +1113,12 @@ static void ptvcursor_new_subtree_levels(ptvcursor_t *ptvc) { subtree_lvl *pushed_tree; - size_t pushed_tree_len = sizeof(subtree_lvl) * ptvc->pushed_tree_max; DISSECTOR_ASSERT(ptvc->pushed_tree_max <= SUBTREE_MAX_LEVELS-SUBTREE_ONCE_ALLOCATION_NUMBER); ptvc->pushed_tree_max += SUBTREE_ONCE_ALLOCATION_NUMBER; - pushed_tree = (subtree_lvl *)wmem_alloc(wmem_packet_scope(), sizeof(subtree_lvl) * ptvc->pushed_tree_max); + pushed_tree = (subtree_lvl *)wmem_realloc(wmem_packet_scope(), (void *)ptvc->pushed_tree, sizeof(subtree_lvl) * ptvc->pushed_tree_max); DISSECTOR_ASSERT(pushed_tree != NULL); - if (ptvc->pushed_tree) - memcpy(pushed_tree, ptvc->pushed_tree, pushed_tree_len); ptvc->pushed_tree = pushed_tree; }