aboutsummaryrefslogtreecommitdiffstats
path: root/array.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2018-08-02 20:43:56 +0300
committerArnold D. Robbins <arnold@skeeve.com>2018-08-02 20:43:56 +0300
commitb32c67e0f99672ad4104cee4695b5eb040df16f4 (patch)
treef59c2329e2183fb12e4496306bb7893620bb966c /array.c
parentb98257919b20bdfc14f363761cc6215c1ad8bcee (diff)
parent3998ed059bbcfc189cd0d6c5762913fbd4ff4e77 (diff)
downloadegawk-b32c67e0f99672ad4104cee4695b5eb040df16f4.tar.gz
egawk-b32c67e0f99672ad4104cee4695b5eb040df16f4.tar.bz2
egawk-b32c67e0f99672ad4104cee4695b5eb040df16f4.zip
Merge branch 'gawk-4.2-stable' into feature/gnulib-regex
Diffstat (limited to 'array.c')
-rw-r--r--array.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/array.c b/array.c
index 5d953c04..aa52f3a1 100644
--- a/array.c
+++ b/array.c
@@ -979,7 +979,6 @@ cmp_strings(const NODE *n1, const NODE *n2)
char *s1, *s2;
size_t len1, len2;
int ret;
- size_t lmin;
s1 = n1->stptr;
len1 = n1->stlen;
@@ -992,7 +991,9 @@ cmp_strings(const NODE *n1, const NODE *n2)
return 1;
/* len1 > 0 && len2 > 0 */
- lmin = len1 < len2 ? len1 : len2;
+ // make const to ensure it doesn't change if we
+ // need to call memcmp(), below
+ const size_t lmin = len1 < len2 ? len1 : len2;
if (IGNORECASE) {
const unsigned char *cp1 = (const unsigned char *) s1;
@@ -1002,7 +1003,9 @@ cmp_strings(const NODE *n1, const NODE *n2)
ret = strncasecmpmbs((const unsigned char *) cp1,
(const unsigned char *) cp2, lmin);
} else {
- for (ret = 0; lmin-- > 0 && ret == 0; cp1++, cp2++)
+ size_t count = lmin;
+
+ for (ret = 0; count-- > 0 && ret == 0; cp1++, cp2++)
ret = casetable[*cp1] - casetable[*cp2];
}
if (ret != 0)