From cfb5a32c4e47d9061ced49e74f34c275bd9e4b54 Mon Sep 17 00:00:00 2001 From: Ralph Corderoy Date: Sun, 16 Oct 2016 15:25:37 +0100 Subject: [PATCH] Don't test -reverse's boolean on every message number. Test just once before the loop and define start, end, and increment. Keep going whilst start is not end. Happy for underflow or overflow in calculating end because msgnum will make the same transition. It can't affect whether the loop runs at all since 0 is not a valid message number. --- uip/pick.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/uip/pick.c b/uip/pick.c index fba190a2..fb339d46 100644 --- a/uip/pick.c +++ b/uip/pick.c @@ -69,6 +69,7 @@ main (int argc, char **argv) register FILE *fp; int debug = 0; int reverse = 0; + int start, end, inc; if (nmh_init(argv[0], 1)) { return 1; } @@ -237,9 +238,16 @@ main (int argc, char **argv) * match. If there is NOT a match, then add it to a list to * remove from the final sequence (it will make sense later) */ - for (msgnum = reverse ? mp->hghsel : mp->lowsel; - reverse ? msgnum >= mp->lowsel : msgnum <= mp->hghsel; - msgnum += reverse ? -1 : 1) { + if (!reverse) { /* Overflow or underflow is fine. */ + start = mp->lowsel; + end = mp->hghsel + 1; + inc = 1; + } else { + start = mp->hghsel; + end = mp->lowsel - 1; + inc = -1; + } + for (msgnum = start; msgnum != end; msgnum += inc) { if (is_selected (mp, msgnum)) { if ((fp = fopen (cp = m_name (msgnum), "r")) == NULL) admonish (cp, "unable to read message"); -- 2.56.0