more support for parametrized type; additional ANY support
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@246 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/libasn1fix/asn1fix_tags.c b/libasn1fix/asn1fix_tags.c
index de80fad..22ba422 100644
--- a/libasn1fix/asn1fix_tags.c
+++ b/libasn1fix/asn1fix_tags.c
@@ -1,7 +1,7 @@
#include "asn1fix_internal.h"
int
-asn1f_fetch_tag(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *expr, struct asn1p_type_tag_s *tag) {
+asn1f_fetch_tag(asn1p_t *asn, asn1p_module_t *mod, asn1p_expr_t *expr, struct asn1p_type_tag_s *tag, int flags) {
int ret;
if(expr->tag.tag_class != TC_NOCLASS) {
@@ -19,6 +19,11 @@
memset(tag, 0, sizeof(*tag));
tag->tag_class = TC_UNIVERSAL;
tag->tag_value = expr_type2uclass_value[expr->expr_type];
+ if(flags && expr->expr_type == ASN_TYPE_ANY) {
+ assert(tag->tag_value == 0);
+ tag->tag_value = -1;
+ return 0;
+ }
return (tag->tag_value == 0) ? -1 : 0;
}
@@ -37,7 +42,8 @@
return -1;
expr->_mark |= TM_RECURSION;
- ret = asn1f_fetch_tag(asn, expr->module, expr, tag);
+ ret = asn1f_fetch_tag(asn, expr->module, expr, tag,
+ flags);
expr->_mark &= ~TM_RECURSION;
return ret;
}