diff options
author | Steev Klimaszewski <threeway@gmail.com> | 2014-06-19 16:54:57 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-07-20 00:20:31 +0000 |
commit | 320c4f0d705a3ed94f710fb4b7b3eef897ff7bc4 (patch) | |
tree | ebc5044c810ba3838cae81377c00ec23d13bb69d /epan/expert.c | |
parent | 450f4916522b0099364e8978405c048362c9e745 (diff) |
va_list can't be NULL on ARM.
Bug: 10209
Change-Id: Ibd63a530450b7d2d4ec244e91c77caa731ba63aa
Signed-off-by: Steev Klimaszewski <threeway@gmail.com>
Signed-off-by: Balint Reczey <balint@balintreczey.hu>
Reviewed-on: https://code.wireshark.org/review/2464
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/expert.c')
-rw-r--r-- | epan/expert.c | 36 |
1 files changed, 29 insertions, 7 deletions
diff --git a/epan/expert.c b/epan/expert.c index 46be838ac8..a69566d120 100644 --- a/epan/expert.c +++ b/epan/expert.c @@ -381,15 +381,26 @@ expert_set_info_vformat(packet_info *pinfo, proto_item *pi, int group, int sever tap_queue_packet(expert_tap, pinfo, ei); } -void -expert_add_info(packet_info *pinfo, proto_item *pi, expert_field *expindex) +/* Helper function for expert_add_info() to work around compiler's special needs on ARM*/ +static inline void +expert_add_info_internal(packet_info *pinfo, proto_item *pi, expert_field *expindex, ...) { + /* the va_list is ignored */ + va_list unused; expert_field_info* eiinfo; /* Look up the item */ EXPERT_REGISTRAR_GET_NTH(expindex->ei, eiinfo); - expert_set_info_vformat(pinfo, pi, eiinfo->group, eiinfo->severity, *eiinfo->hf_info.p_id, FALSE, eiinfo->summary, NULL); + va_start(unused, expindex); + expert_set_info_vformat(pinfo, pi, eiinfo->group, eiinfo->severity, *eiinfo->hf_info.p_id, FALSE, eiinfo->summary, unused); + va_end(unused); +} + +void +expert_add_info(packet_info *pinfo, proto_item *pi, expert_field *expindex) +{ + expert_add_info_internal(pinfo, pi, expindex); } void @@ -406,22 +417,33 @@ expert_add_info_format(packet_info *pinfo, proto_item *pi, expert_field *expinde va_end(ap); } -proto_item * -proto_tree_add_expert(proto_tree *tree, packet_info *pinfo, expert_field* expindex, - tvbuff_t *tvb, gint start, gint length) +/* Helper function for expert_add_expert() to work around compiler's special needs on ARM*/ +static inline proto_item * +proto_tree_add_expert_internal(proto_tree *tree, packet_info *pinfo, expert_field* expindex, + tvbuff_t *tvb, gint start, gint length, ...) { expert_field_info* eiinfo; proto_item *ti; + va_list unused; /* Look up the item */ EXPERT_REGISTRAR_GET_NTH(expindex->ei, eiinfo); ti = proto_tree_add_text(tree, tvb, start, length, "%s", eiinfo->summary); - expert_set_info_vformat(pinfo, ti, eiinfo->group, eiinfo->severity, *eiinfo->hf_info.p_id, FALSE, eiinfo->summary, NULL); + va_start(unused, length); + expert_set_info_vformat(pinfo, ti, eiinfo->group, eiinfo->severity, *eiinfo->hf_info.p_id, FALSE, eiinfo->summary, unused); + va_end(unused); return ti; } proto_item * +proto_tree_add_expert(proto_tree *tree, packet_info *pinfo, expert_field* expindex, + tvbuff_t *tvb, gint start, gint length) +{ + return proto_tree_add_expert_internal(tree, pinfo, expindex, tvb, start, length); +} + +proto_item * proto_tree_add_expert_format(proto_tree *tree, packet_info *pinfo, expert_field* expindex, tvbuff_t *tvb, gint start, gint length, const char *format, ...) { |