aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1fix
diff options
context:
space:
mode:
authorvlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2004-10-31 00:11:50 +0000
committervlm <vlm@59561ff5-6e30-0410-9f3c-9617f08c8826>2004-10-31 00:11:50 +0000
commit7972927fbc1f7a0bcfa9b49d5f060afc054e9eaa (patch)
treeb923edbed9dc34e7b7fae7b103d733a06636aaab /libasn1fix
parent8e1d2fc0f68b9cbf6f6ef390600c1835842eea76 (diff)
removed order dependency in DEFAULT references
git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@577 59561ff5-6e30-0410-9f3c-9617f08c8826
Diffstat (limited to 'libasn1fix')
-rw-r--r--libasn1fix/asn1fix.c6
-rw-r--r--libasn1fix/asn1fix_derefv.c12
-rw-r--r--libasn1fix/asn1fix_derefv.h2
3 files changed, 20 insertions, 0 deletions
diff --git a/libasn1fix/asn1fix.c b/libasn1fix/asn1fix.c
index 33123fc2..7bfb9034 100644
--- a/libasn1fix/asn1fix.c
+++ b/libasn1fix/asn1fix.c
@@ -262,6 +262,12 @@ asn1f_fix_module__phase_2(arg_t *arg) {
continue;
/*
+ * Dereference DEFAULT values.
+ */
+ ret = asn1f_recurse_expr(arg, asn1f_fix_dereference_defaults);
+ RET2RVAL(ret, rvalue);
+
+ /*
* Check semantic validity of constraints.
*/
ret = asn1f_recurse_expr(arg, asn1f_check_constraints);
diff --git a/libasn1fix/asn1fix_derefv.c b/libasn1fix/asn1fix_derefv.c
index eb67ac3f..261425c8 100644
--- a/libasn1fix/asn1fix_derefv.c
+++ b/libasn1fix/asn1fix_derefv.c
@@ -15,6 +15,18 @@ asn1f_fix_dereference_values(arg_t *arg) {
}
}
+ return r_value;
+}
+
+
+/*
+ * Dereference DEFAULT values
+ */
+int
+asn1f_fix_dereference_defaults(arg_t *arg) {
+ asn1p_expr_t *expr = arg->expr;
+ int r_value = 0;
+
if(expr->marker.default_value) {
arg_t tmparg = *arg;
asn1p_expr_t tmpexpr = *expr;
diff --git a/libasn1fix/asn1fix_derefv.h b/libasn1fix/asn1fix_derefv.h
index 93153851..3964f539 100644
--- a/libasn1fix/asn1fix_derefv.h
+++ b/libasn1fix/asn1fix_derefv.h
@@ -3,4 +3,6 @@
int asn1f_fix_dereference_values(arg_t *);
+int asn1f_fix_dereference_defaults(arg_t *);
+
#endif /* _ASN1FIX_DEREFV_H_ */