diff --git a/src/frontend/evaluate.c b/src/frontend/evaluate.c index dd6e0cd9b..b24a6c0cd 100644 --- a/src/frontend/evaluate.c +++ b/src/frontend/evaluate.c @@ -922,6 +922,8 @@ apply_func(struct func *func, struct pnode *arg) for (; v; v = v->v_link2) { + char *name; + data = apply_func_funcall(func, v, &len, &type); if (!data) @@ -934,8 +936,16 @@ apply_func(struct func *func, struct pnode *arg) func->fu_name, v->v_name, len, type); #endif + if (eq(func->fu_name, "minus")) + name = mkcname('a', func->fu_name, v->v_name); + else if (eq(func->fu_name, "not")) + name = mkcname('c', func->fu_name, v->v_name); + else + name = mkcname('b', v->v_name, NULL); + t = alloc(struct dvec); ZERO(t, struct dvec); + t->v_name = name; t->v_flags = (v->v_flags & ~VF_COMPLEX & ~VF_REAL & ~VF_PERMANENT & ~VF_MINGIVEN & ~VF_MAXGIVEN); @@ -945,13 +955,6 @@ apply_func(struct func *func, struct pnode *arg) else t->v_compdata = (ngcomplex_t *) data; - if (eq(func->fu_name, "minus")) - t->v_name = mkcname('a', func->fu_name, v->v_name); - else if (eq(func->fu_name, "not")) - t->v_name = mkcname('c', func->fu_name, v->v_name); - else - t->v_name = mkcname('b', v->v_name, NULL); - t->v_type = v->v_type; /* This is strange too. */ t->v_length = len; t->v_scale = v->v_scale;