aboutsummaryrefslogtreecommitdiffstats
path: root/skeletons/constr_SEQUENCE.c
diff options
context:
space:
mode:
authorvlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2004-09-10 09:37:12 +0000
committervlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2004-09-10 09:37:12 +0000
commit060fe2a5252a40b27f71ad2b39dc3395980f6c7d (patch)
treef86d1387e53a5c55055baa1f5e2ce3f4f62353ce /skeletons/constr_SEQUENCE.c
parentddd5a7dd24cdb8b8826740c33614d4fc3c1f0698 (diff)
more explicit ANY support
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@303 59561ff5-6e30-0410-9f3c-9617f08c8826
Diffstat (limited to 'skeletons/constr_SEQUENCE.c')
-rw-r--r--skeletons/constr_SEQUENCE.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c
index 5bee2ed6..649f53b7 100644
--- a/skeletons/constr_SEQUENCE.c
+++ b/skeletons/constr_SEQUENCE.c
@@ -257,6 +257,14 @@ SEQUENCE_decode_ber(asn1_TYPE_descriptor_t *td,
edx = n;
ctx->step = 1 + 2 * edx; /* Remember! */
goto microphase2;
+ } else if(elements[n].flags & ATF_OPEN_TYPE) {
+ /*
+ * This is the ANY type, which may bear
+ * any flag whatsoever.
+ */
+ edx = n;
+ ctx->step = 1 + 2 * edx; /* Remember! */
+ goto microphase2;
} else if(elements[n].tag == (ber_tlv_tag_t)-1) {
use_bsearch = 1;
break;
@@ -304,18 +312,7 @@ SEQUENCE_decode_ber(asn1_TYPE_descriptor_t *td,
* or an extension (...),
* or an end of the indefinite-length structure.
*/
-
if(!IN_EXTENSION_GROUP(specs, edx)) {
- if(elements[edx].tag == (ber_tlv_tag_t)-1
- /* FIXME: any support */
- && (elements[edx].flags & ATF_POINTER) == 0) {
- /*
- * This must be the ANY type.
- */
- ctx->step |= 1;
- goto microphase2;
- }
-
ASN_DEBUG("Unexpected tag %s",
ber_tlv_tag_string(tlv_tag));
ASN_DEBUG("Expected tag %s (%s)%s",