aboutsummaryrefslogtreecommitdiffstats
path: root/meta-networking/recipes-support/wireshark/wireshark/va_list-can-t-be-NULL-on-ARM.patch
blob: 26a004cc3bc542c3d3541d69e73bd05511534d85 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
From 320c4f0d705a3ed94f710fb4b7b3eef897ff7bc4 Mon Sep 17 00:00:00 2001
From: Steev Klimaszewski <threeway@gmail.com>
Date: Thu, 19 Jun 2014 16:54:57 -0500
Subject: [PATCH] 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>

Upstream-Status: Backport
The patch was imported from the wireshark git server
  (https://code.wireshark.org/review/p/wireshark.git) as of commit id
    320c4f0d705a3ed94f710fb4b7b3eef897ff7bc4.

Signed-off-by: Armin Kuster <akuster@mvista.com>

---
 epan/expert.c | 36 +++++++++++++++++++++++++++++-------
 1 file changed, 29 insertions(+), 7 deletions(-)

diff --git a/epan/expert.c b/epan/expert.c
index 46be838..a69566d 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, ...)
 {
-- 
1.9.1