diff options
author | vlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826> | 2004-09-10 09:37:12 +0000 |
---|---|---|
committer | vlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826> | 2004-09-10 09:37:12 +0000 |
commit | 060fe2a5252a40b27f71ad2b39dc3395980f6c7d (patch) | |
tree | f86d1387e53a5c55055baa1f5e2ce3f4f62353ce /skeletons/constr_SEQUENCE.c | |
parent | ddd5a7dd24cdb8b8826740c33614d4fc3c1f0698 (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.c | 19 |
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", |