Wireshark mailing list archives
Re: switching to proto_tree_add_subtree()
From: Martin Kaiser <lists () kaiser cx>
Date: Tue, 29 Jul 2014 20:33:57 +0200
Thus wrote darkjames-ws () darkjames pl (darkjames-ws () darkjames pl):
Hi,
On Mon, Jul 28, 2014 at 10:47:43PM +0200, Martin Kaiser wrote:However, I don't quite understand why for tree!=NULL but not visible, proto_tree_add_text() returns tree. I can see this in the code, we call TRY_TO_FAKE_THIS_ITEM(), which returns the tree itself when it's not visible. But what sense does this make for the caller?
Just to make filtering works. We're keeping array of "interesting fields", stored in tree->tree_data->interesting_hfids.
In common case like this: foobar_tree = proto_tree_add_subtree_format(tree, ..., "Foobar");
proto_tree_add_item(foobar_tree, hf_foobar_xyz, ...); proto_tree_add_item(foobar_tree, hf_foobar_aaa, ...);
when foobar_tree == NULL, proto_tree_add_item() will fast return in if (!tree) check inside TRY_TO_FAKE_THIS_ITEM_OR_FREE
This case is ok, I understand that this makes things faster if we don't have a tree. I'm confused about this block in TRY_TO_FAKE_THIS_ITEM_OR_FREE if (!(PTREE_DATA(tree)->visible)) { \ if (PTREE_FINFO(tree)) { \ if ((hfinfo->ref_type != HF_REF_TYPE_DIRECT) \ && (hfinfo->type != FT_PROTOCOL || \ PTREE_DATA(tree)->fake_protocols)) { \ free_block; \ /* just return tree back to the caller */\ return tree; \ If tree is not visible (and fake_protocols is set, which seems to be the default), we return the tree itself. proto_item *it = proto_tree_add_text(tree, tvb, 0, -1, "foobar"); If tree!=NULL && !(PTREE_DATA(tree)->visible) the return value it==tree Why does this make sense? Regards, Martin ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- switching to proto_tree_add_subtree() Martin Kaiser (Jul 28)
- Re: switching to proto_tree_add_subtree() darkjames-ws (Jul 28)
- Re: switching to proto_tree_add_subtree() Martin Kaiser (Jul 29)
- Re: switching to proto_tree_add_subtree() darkjames-ws (Jul 29)
- Re: switching to proto_tree_add_subtree() darkjames-ws (Jul 29)
- Re: switching to proto_tree_add_subtree() Jeff Morriss (Jul 29)
- Re: switching to proto_tree_add_subtree() Evan Huus (Jul 29)
- Re: switching to proto_tree_add_subtree() darkjames-ws (Jul 29)
- Re: switching to proto_tree_add_subtree() Jeff Morriss (Jul 30)
- Re: switching to proto_tree_add_subtree() darkjames-ws (Jul 30)
- Re: switching to proto_tree_add_subtree() Jeff Morriss (Jul 30)
- Re: switching to proto_tree_add_subtree() Martin Kaiser (Jul 29)
- Re: switching to proto_tree_add_subtree() darkjames-ws (Jul 28)
- <Possible follow-ups>
- Re: switching to proto_tree_add_subtree() mmann78 (Jul 30)