From: Ralph Corderoy Date: Sun, 16 Oct 2016 14:25:37 +0000 (+0100) Subject: Don't test -reverse's boolean on every message number. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/cfb5a32c4e47d9061ced49e74f34c275bd9e4b54?hp=256ad62eb53de61a900c56e3271327357b98e9c8 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. --- 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");