Wireshark-dev: [Wireshark-dev] Solaris C compiler doesn't like anonymous unions
From: Albert Chin <wireshark-dev@xxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 12 Jul 2007 18:18:59 -0500
Fix to avoid anonymous union which Sun Studio 11 C compiler doesn't like. -- albert chin (china@xxxxxxxxxxxxxxxxxx)
Index: epan/asn1.h
===================================================================
--- epan/asn1.h (revision 22293)
+++ epan/asn1.h (working copy)
@@ -65,7 +65,7 @@
struct {
int (*type_cb)(tvbuff_t*, int, struct _asn1_ctx_t*, proto_tree*, int);
} per;
- };
+ } u;
} external;
} asn1_ctx_t;
Index: epan/dissectors/packet-per.c
===================================================================
--- epan/dissectors/packet-per.c (revision 22293)
+++ epan/dissectors/packet-per.c (working copy)
@@ -1942,7 +1942,7 @@
static int
dissect_per_T_single_ASN1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- offset = dissect_per_open_type(tvb, offset, actx, tree, actx->external.hf_index, actx->external.per.type_cb);
+ offset = dissect_per_open_type(tvb, offset, actx, tree, actx->external.hf_index, actx->external.u.per.type_cb);
return offset;
}
@@ -1954,8 +1954,8 @@
offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, &actx->external.octet_aligned);
- if (actx->external.per.type_cb) {
- actx->external.per.type_cb(actx->external.octet_aligned, 0, actx, tree, actx->external.hf_index);
+ if (actx->external.u.per.type_cb) {
+ actx->external.u.per.type_cb(actx->external.octet_aligned, 0, actx, tree, actx->external.hf_index);
} else {
actx->created_item = proto_tree_add_text(tree, actx->external.octet_aligned, 0, -1, "Unknown EXTERNAL Type");
}
@@ -1969,8 +1969,8 @@
offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
NO_BOUND, NO_BOUND, FALSE, &actx->external.arbitrary);
- if (actx->external.per.type_cb) {
- actx->external.per.type_cb(actx->external.arbitrary, 0, actx, tree, actx->external.hf_index);
+ if (actx->external.u.per.type_cb) {
+ actx->external.u.per.type_cb(actx->external.arbitrary, 0, actx, tree, actx->external.hf_index);
} else {
actx->created_item = proto_tree_add_text(tree, actx->external.arbitrary, 0, -1, "Unknown EXTERNAL Type");
}
@@ -2022,7 +2022,7 @@
dissect_per_external_type(tvbuff_t *tvb _U_, guint32 offset, asn1_ctx_t *actx, proto_tree *tree _U_, int hf_index _U_, per_type_fn type_cb)
{
asn1_ctx_clean_external(actx);
- actx->external.per.type_cb = type_cb;
+ actx->external.u.per.type_cb = type_cb;
offset = dissect_per_External(tvb, offset, actx, tree, hf_index);
asn1_ctx_clean_external(actx);
Index: epan/dissectors/packet-ber.c
===================================================================
--- epan/dissectors/packet-ber.c (revision 22293)
+++ epan/dissectors/packet-ber.c (working copy)
@@ -3845,7 +3845,7 @@
static int
dissect_ber_T_single_ASN1_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
- if(!actx->external.ber.ber_callback){
+ if(!actx->external.u.ber.ber_callback){
offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree);
}else{
/* FIX ME */
@@ -3905,7 +3905,7 @@
int
dissect_ber_external_type(gboolean implicit_tag, proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, gint hf_id, ber_callback func){
- actx->external.ber.ber_callback = func;
+ actx->external.u.ber.ber_callback = func;
offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
hf_id, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, TRUE, dissect_ber_external_U);
- Follow-Ups:
- Re: [Wireshark-dev] Solaris C compiler doesn't like anonymous unions
- From: Jaap Keuter
- Re: [Wireshark-dev] Solaris C compiler doesn't like anonymous unions
- Prev by Date: Re: [Wireshark-dev] [PATCH] 802.11 dissector: fix EOSP flag display
- Next by Date: [Wireshark-dev] @INET_PTON_LO@ and @INET_NTOP_LO@ in epan/Makefile.am
- Previous by thread: Re: [Wireshark-dev] What do you use to get a boolean
- Next by thread: Re: [Wireshark-dev] Solaris C compiler doesn't like anonymous unions
- Index(es):