diff options
Diffstat (limited to 'string')
-rw-r--r-- | string/strcoll.c | 25 | ||||
-rw-r--r-- | string/strxfrm.c | 10 |
2 files changed, 17 insertions, 18 deletions
diff --git a/string/strcoll.c b/string/strcoll.c index f44f6c1f6d..1aab47e3be 100644 --- a/string/strcoll.c +++ b/string/strcoll.c @@ -172,31 +172,28 @@ STRCOLL (s1, s2, l) return w1 < w2 ? -1 : 1; /* We have to increment the index counters. */ - if ((forward && ++s1idx >= s1run->data[pass].number) - || (!forward && --s1idx < 0)) + if (forward) { - if (forward) + if (++s1idx >= s1run->data[pass].number) { s1run = s1run->next; s1idx = 0; } - else + if (++s2idx >= s2run->data[pass].number) { - s1run = s1run->prev; - if (s1run != NULL) - s1idx = s1run->data[pass].number - 1; + s2run = s2run->next; + s2idx = 0; } } - - if ((forward && ++s2idx >= s2run->data[pass].number) - || (!forward && --s2idx < 0)) + else { - if (forward) + if (--s1idx < 0) { - s2run = s2run->next; - s2idx = 0; + s1run = s1run->prev; + if (s1run != NULL) + s1idx = s1run->data[pass].number - 1; } - else + if (--s2idx < 0) { s2run = s2run->prev; if (s2run != NULL) diff --git a/string/strxfrm.c b/string/strxfrm.c index 0bdf1069b6..c2b8f48310 100644 --- a/string/strxfrm.c +++ b/string/strxfrm.c @@ -249,15 +249,17 @@ STRXFRM (STRING_TYPE *dest, const STRING_TYPE *src, size_t n, __locale_t l) written = print_val (w, dest, n, written); /* We have to increment the index counters. */ - if ((forward && ++idx >= run->data[pass].number) - || (!forward && --idx < 0)) + if (forward) { - if (forward) + if (++idx >= run->data[pass].number) { run = run->next; idx = 0; } - else + } + else + { + if (--idx < 0) { run = run->prev; if (run != NULL) |