/** convenience macro to get field_info.flags */
#define FI_GET_FLAG(fi, flag) ((fi) ? (fi->flags & flag) : 0)
/** convenience macro to set field_info.flags */
-#define FI_SET_FLAG(fi, flag) ((fi) ? (fi->flags = fi->flags | flag) : 0)
+#define FI_SET_FLAG(fi, flag) \
+ G_STMT_START \
+ if (fi) \
+ (fi)->flags = (fi)->flags | (flag); \
+ G_STMT_END
/** One of these exists for the entire protocol tree. Each proto_node
* in the protocol tree points to the same copy. */
/** mark this protocol field to be hidden from the protocol tree display (used for filtering only) */
/* HIDING PROTOCOL FIELDS IS DEPRECATED, IT'S CONSIDERED TO BE BAD GUI DESIGN! */
#define PROTO_ITEM_SET_HIDDEN(proto_item) \
- ((proto_item = proto_item) ? FI_SET_FLAG(PITEM_FINFO(proto_item), FI_HIDDEN) : 0)
+ G_STMT_START \
+ if (proto_item) \
+ FI_SET_FLAG(PITEM_FINFO(proto_item), FI_HIDDEN); \
+ G_STMT_END
/** is this protocol field generated by Wireshark (and not read from the packet data)? */
#define PROTO_ITEM_IS_GENERATED(proto_item) \
((proto_item) ? FI_GET_FLAG(PITEM_FINFO(proto_item), FI_GENERATED) : 0)
/** mark this protocol field as generated by Wireshark (and not read from the packet data) */
#define PROTO_ITEM_SET_GENERATED(proto_item) \
- ((proto_item = proto_item) ? FI_SET_FLAG(PITEM_FINFO(proto_item), FI_GENERATED) : 0)
+ G_STMT_START \
+ if (proto_item) \
+ FI_SET_FLAG(PITEM_FINFO(proto_item), FI_GENERATED); \
+ G_STMT_END
/** is this protocol field actually a URL? */
#define PROTO_ITEM_IS_URL(proto_item) \
((proto_item) ? FI_GET_FLAG(PITEM_FINFO(proto_item), FI_URL) : 0)
/** mark this protocol field as a URL */
#define PROTO_ITEM_SET_URL(proto_item) \
- ((proto_item) ? FI_SET_FLAG(PITEM_FINFO(proto_item), FI_URL) : 0)
+ G_STMT_START \
+ if (proto_item) \
+ FI_SET_FLAG(PITEM_FINFO(proto_item), FI_URL); \
+ G_STMT_END
typedef void (*proto_tree_foreach_func)(proto_node *, gpointer);
typedef gboolean (*proto_tree_traverse_func)(proto_node *, gpointer);