From 709aee90ce3b082fdb16b987ebf515e259a5e153 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Tue, 12 Jun 2007 15:43:16 +0000 Subject: 23553: unsubscripted array inside math eval behaves more rationally --- Src/params.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'Src/params.c') diff --git a/Src/params.c b/Src/params.c index 128d28e75..a44f21402 100644 --- a/Src/params.c +++ b/Src/params.c @@ -1941,10 +1941,18 @@ getarrvalue(Value v) mod_export zlong getintvalue(Value v) { - if (!v || v->isarr) + if (!v) return 0; if (v->inv) return v->start; + if (v->isarr) { + char **arr = getarrvalue(v); + if (arr) { + char *scal = sepjoin(arr, NULL, 1); + return mathevali(scal); + } else + return 0; + } if (PM_TYPE(v->pm->node.flags) == PM_INTEGER) return v->pm->gsu.i->getfn(v->pm); if (v->pm->node.flags & (PM_EFLOAT|PM_FFLOAT)) @@ -1959,10 +1967,18 @@ getnumvalue(Value v) mnumber mn; mn.type = MN_INTEGER; - if (!v || v->isarr) { + + if (!v) { mn.u.l = 0; } else if (v->inv) { mn.u.l = v->start; + } else if (v->isarr) { + char **arr = getarrvalue(v); + if (arr) { + char *scal = sepjoin(arr, NULL, 1); + return matheval(scal); + } else + mn.u.l = 0; } else if (PM_TYPE(v->pm->node.flags) == PM_INTEGER) { mn.u.l = v->pm->gsu.i->getfn(v->pm); } else if (v->pm->node.flags & (PM_EFLOAT|PM_FFLOAT)) { -- cgit 1.4.1