aboutsummaryrefslogtreecommitdiffstats
path: root/libasn1fix
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-03-21 04:48:15 +0000
committerLev Walkin <vlm@lionet.info>2006-03-21 04:48:15 +0000
commit0c0bca6bc489b142bdde51ef94c37805903ec3e5 (patch)
treed289be00253b7bf249f5afc885e0de26deb9ef81 /libasn1fix
parenta00d6b371486efc2fbe6e812882d250f5a0bb75c (diff)
parameterization: direct assignment
Diffstat (limited to 'libasn1fix')
-rw-r--r--libasn1fix/asn1fix.c3
-rw-r--r--libasn1fix/asn1fix_param.c20
2 files changed, 3 insertions, 20 deletions
diff --git a/libasn1fix/asn1fix.c b/libasn1fix/asn1fix.c
index 24ba7c8d..05118682 100644
--- a/libasn1fix/asn1fix.c
+++ b/libasn1fix/asn1fix.c
@@ -490,6 +490,9 @@ asn1f_check_duplicate(arg_t *arg) {
assert(tmparg.expr->Identifier);
assert(arg->expr->Identifier);
+ if(arg->expr->spec_index != -1)
+ continue;
+
if(tmparg.expr == arg->expr) break;
if(strcmp(tmparg.expr->Identifier,
diff --git a/libasn1fix/asn1fix_param.c b/libasn1fix/asn1fix_param.c
index bbd7cf4d..4c87afcd 100644
--- a/libasn1fix/asn1fix_param.c
+++ b/libasn1fix/asn1fix_param.c
@@ -18,11 +18,9 @@ asn1f_parameterization_fork(arg_t *arg, asn1p_expr_t *expr, asn1p_expr_t *rhs_ps
resolver_arg_t rarg; /* resolver argument */
asn1p_expr_t *exc; /* expr clone */
asn1p_expr_t *rpc; /* rhs_pspecs clone */
- asn1p_expr_t *target;
void *p;
struct asn1p_pspec_s *pspec;
int npspecs;
- int i;
assert(rhs_pspecs);
assert(expr->lhs_params);
@@ -70,24 +68,6 @@ asn1f_parameterization_fork(arg_t *arg, asn1p_expr_t *expr, asn1p_expr_t *rhs_ps
pspec->my_clone = exc;
exc->spec_index = npspecs;
- /* Update LHS->RHS specialization in target */
- target = TQ_FIRST(&rpc->members);
- for(i = 0; i < exc->lhs_params->params_count;
- i++, target = TQ_NEXT(target, next)) {
- if(!target) { target = (void *)0xdeadbeef; break; }
-
- assert(exc->lhs_params->params[i].into_expr == 0);
- exc->lhs_params->params[i].into_expr = target;
- }
- if(target) {
- asn1p_expr_free(exc);
- asn1p_expr_free(rpc);
- FATAL("Parameterization of %s failed: "
- "parameters number mismatch", expr->Identifier);
- errno = EPERM;
- return NULL;
- }
-
DEBUG("Forked new parameterization for %s", expr->Identifier);
/* Commit */