--- busybox-1.24.0/coreutils/sort.c
+++ busybox-1.24.0-sort/coreutils/sort.c
@@ -106,7 +106,9 @@ static struct sort_key {
 
 static char *get_key(char *str, struct sort_key *key, int flags)
 {
-	int start = 0, end = 0, len, j;
+	int start = start; /* for compiler */
+	int end;
+	int len, j;
 	unsigned i;
 
 	/* Special case whole string, so we don't have to make a copy */
@@ -123,12 +125,15 @@ static char *get_key(char *str, struct s
 			end = len;
 		/* Loop through fields */
 		else {
+			unsigned char ch = 0;
+
 			end = 0;
 			for (i = 1; i < key->range[2*j] + j; i++) {
 				if (key_separator) {
 					/* Skip body of key and separator */
-					while (str[end]) {
-						if (str[end++] == key_separator)
+					while ((ch = str[end]) != '\0') {
+							end++;
+						if (ch == key_separator)
 							break;
 					}
 				} else {
@@ -136,7 +141,7 @@ static char *get_key(char *str, struct s
 					while (isspace(str[end]))
 						end++;
 					/* Skip body of key */
-					while (str[end]) {
+					while (str[end] != '\0') {
 						if (isspace(str[end]))
 							break;
 						end++;
@@ -144,8 +149,13 @@ static char *get_key(char *str, struct s
 				}
 			}
 			/* Remove last delim: "abc:def:" => "abc:def" */
-			if (key_separator && j && end != 0)
+			if (j && ch) {
+				//if (str[end-1] != key_separator)
+				//  bb_error_msg(_and_die("BUG! "
+				//  "str[start:%d,end:%d]:'%.*s'",
+				//  start, end, (int)(end-start), &str[start]);
 				end--;
+			}
 		}
 		if (!j) start = end;
 	}
--- busybox-1.24.0/testsuite/sort.tests
+++ busybox-1.24.0-sort/testsuite/sort.tests
@@ -106,6 +106,42 @@ a/a:a
 a:b
 " ""
 
+testing "glibc build sort" "sort -t. -k 1,1 -k 2n,2n -k 3 input" "\
+GLIBC_2.1
+GLIBC_2.1.1
+GLIBC_2.2
+GLIBC_2.2.1
+GLIBC_2.10
+GLIBC_2.20
+GLIBC_2.21
+" "\
+GLIBC_2.21
+GLIBC_2.1.1
+GLIBC_2.2.1
+GLIBC_2.2
+GLIBC_2.20
+GLIBC_2.10
+GLIBC_2.1
+" ""
+
+testing "glibc build sort unique" "sort -u -t. -k 1,1 -k 2n,2n -k 3 input" "\
+GLIBC_2.1
+GLIBC_2.1.1
+GLIBC_2.2
+GLIBC_2.2.1
+GLIBC_2.10
+GLIBC_2.20
+GLIBC_2.21
+" "\
+GLIBC_2.10
+GLIBC_2.2.1
+GLIBC_2.1.1
+GLIBC_2.20
+GLIBC_2.2
+GLIBC_2.1
+GLIBC_2.21
+" ""
+
 testing "sort -u should consider field only when discarding" "sort -u -k2 input" "\
 a c
 " "\
