From 595c0bee41e0c7286c9779ab8f08ca6ec140c8d7 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 10 Sep 2019 19:06:58 -0700 Subject: bracket: bug: wrong result when function is applied. Reported by user vapnik spaknik. * lib.c (bracket): Don't rely on the index variable to step through the arguments, because it only counts fixed arguments. The args_get function doesn't increment the index beyond args->fill; when popping arguments from args->list, index stays unmodified. * tests/016/arith.tl: Tests for bracket added. --- lib.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'lib.c') diff --git a/lib.c b/lib.c index c76c4864..3b2aa4af 100644 --- a/lib.c +++ b/lib.c @@ -3341,15 +3341,15 @@ val clamp(val low, val high, val num) val bracket(val larg, struct args *args) { - cnum index = 0; + cnum index = 0, i = 0; - while (args_more(args, index)) { + for (; args_more(args, index); i++) { val rarg = args_get(args, &index); if (less(larg, rarg)) - return num(index - 1); + return num(i); } - return num(index); + return num(i); } val string_own(wchar_t *str) -- cgit v1.2.3