From 0c253bf8a63295027405c0ac420b11afb3df1e65 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Mon, 25 May 2020 06:26:36 -0700 Subject: rsearch: fix broken. The rsearch function is completely broken, returning incorrect values. * lib.c (search_list, rsearch_list): Update the position in the increment part of the loop. This fix only affects research, but the code is copy-and-paste, so it's good to keep them the same, and the position of the pos update is a code smell regardless. --- lib.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib.c b/lib.c index 7f0d04da..36ea76ba 100644 --- a/lib.c +++ b/lib.c @@ -10798,7 +10798,7 @@ static val search_list(val seq, val key, val testfun, val keyfun) /* TODO: optimize me */ gc_hint(seq); - for (; seq; seq = cdr(seq)) { + for (; seq; seq = cdr(seq), pos = plus(pos, one)) { for (siter = seq, kiter = key; siter && kiter; siter = cdr(siter), kiter = cdr(kiter)) @@ -10807,7 +10807,6 @@ static val search_list(val seq, val key, val testfun, val keyfun) funcall1(keyfun, car(siter)), funcall1(keyfun, car(kiter)))) { - pos = plus(pos, one); break; } } @@ -10872,7 +10871,7 @@ static val rsearch_list(val seq, val key, val testfun, val keyfun) /* TODO: optimize me */ gc_hint(seq); - for (; seq; seq = cdr(seq)) { + for (; seq; seq = cdr(seq), pos = plus(pos, one)) { for (siter = seq, kiter = key; siter && kiter; siter = cdr(siter), kiter = cdr(kiter)) @@ -10881,7 +10880,6 @@ static val rsearch_list(val seq, val key, val testfun, val keyfun) funcall1(keyfun, car(siter)), funcall1(keyfun, car(kiter)))) { - pos = plus(pos, one); break; } } -- cgit v1.2.3