File i18n-limfield.diff of Package coreutils

--- src/sort.c
+++ src/sort.c
@@ -1627,7 +1627,7 @@ limfield_mb (const struct line *line, co
            GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
            ptr += mblength;
          }
-       if (ptr < lim)
+       if (ptr < lim && (eword | echar))
          {
            GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
            ptr += mblength;
@@ -1638,11 +1638,6 @@ limfield_mb (const struct line *line, co
       {
        while (ptr < lim && ismbblank (ptr, &mblength))
          ptr += mblength;
-       if (ptr < lim)
-         {
-           GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
-           ptr += mblength;
-         }
        while (ptr < lim && !ismbblank (ptr, &mblength))
          ptr += mblength;
       }
@@ -1652,20 +1647,19 @@ limfield_mb (const struct line *line, co
   /* Make LIM point to the end of (one byte past) the current field.  */
   if (tab != NULL)
     {
-      char *newlim, *p;
+      char *newlim;
 
-      newlim = NULL;
-      for (p = ptr; p < lim;)
-       {
-         if (memcmp (p, tab, tab_length) == 0)
-           {
-             newlim = p;
-             break;
-           }
-
-         GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
-         p += mblength;
-       }
+      for (newlim = ptr; newlim < lim;)
+	{
+	  if (memcmp (newlim, tab, tab_length) == 0)
+	    {
+	      lim = newlim;
+	      break;
+	    }
+
+	  GET_BYTELEN_OF_CHAR (lim, newlim, mblength, state);
+	  newlim += mblength;
+	}
     }
   else
     {
@@ -1674,24 +1668,20 @@ limfield_mb (const struct line *line, co
 
       while (newlim < lim && ismbblank (newlim, &mblength))
        newlim += mblength;
-      if (ptr < lim)
-       {
-         GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
-         ptr += mblength;
-       }
       while (newlim < lim && !ismbblank (newlim, &mblength))
-       newlim += mblength;
+	newlim += mblength;
       lim = newlim;
     }
 # endif
 
-  /* If we're skipping leading blanks, don't start counting characters
-     until after skipping past any leading blanks.  */
+  /* If we're ignoring leading blanks when computing the End
+     of the field, don't start counting bytes until after skipping
+     past any leading blanks. */
   if (key->skipeblanks)
     while (ptr < lim && ismbblank (ptr, &mblength))
       ptr += mblength;
 
-  memset (&state, '\0', sizeof(mbstate_t));
+  memset (&state, '\0', sizeof (mbstate_t));
 
   /* Advance PTR by ECHAR (if possible), but no further than LIM.  */
   for (i = 0; i < echar; i++)
@@ -1699,9 +1689,9 @@ limfield_mb (const struct line *line, co
       GET_BYTELEN_OF_CHAR (lim, ptr, mblength, state);
 
       if (ptr + mblength > lim)
-       break;
+	break;
       else
-       ptr += mblength;
+	ptr += mblength;
     }
 
   return ptr;
openSUSE Build Service is sponsored by