aboutsummaryrefslogtreecommitdiffstats
path: root/epan/expert.c
diff options
context:
space:
mode:
authorSteev Klimaszewski <threeway@gmail.com>2014-06-19 16:54:57 -0500
committerMichael Mann <mmann78@netscape.net>2014-07-20 00:20:31 +0000
commit320c4f0d705a3ed94f710fb4b7b3eef897ff7bc4 (patch)
treeebc5044c810ba3838cae81377c00ec23d13bb69d /epan/expert.c
parent450f4916522b0099364e8978405c048362c9e745 (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.c36
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, ...)
{