summary refs log tree commit diff
path: root/string/strcoll.c
diff options
context:
space:
mode:
Diffstat (limited to 'string/strcoll.c')
-rw-r--r--string/strcoll.c25
1 files changed, 11 insertions, 14 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)