Module Name:    src
Committed By:   dsl
Date:           Sat Sep 19 16:18:01 UTC 2009

Modified Files:
        src/usr.bin/sort: radix_sort.c

Log Message:
Fix sort -u, PR/42094


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/usr.bin/sort/radix_sort.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/sort/radix_sort.c
diff -u src/usr.bin/sort/radix_sort.c:1.3 src/usr.bin/sort/radix_sort.c:1.4
--- src/usr.bin/sort/radix_sort.c:1.3	Thu Sep 10 22:02:40 2009
+++ src/usr.bin/sort/radix_sort.c	Sat Sep 19 16:18:00 2009
@@ -1,4 +1,4 @@
-/*	$NetBSD: radix_sort.c,v 1.3 2009/09/10 22:02:40 dsl Exp $	*/
+/*	$NetBSD: radix_sort.c,v 1.4 2009/09/19 16:18:00 dsl Exp $	*/
 
 /*-
  * Copyright (c) 1990, 1993
@@ -37,7 +37,7 @@
 #if 0
 static char sccsid[] = "@(#)radixsort.c	8.2 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: radix_sort.c,v 1.3 2009/09/10 22:02:40 dsl Exp $");
+__RCSID("$NetBSD: radix_sort.c,v 1.4 2009/09/19 16:18:00 dsl Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -184,27 +184,29 @@
 		s_len = akh->keylen;
 		for (ai = ak; ;) {
 			ai--;
-			t = (*ai)->data;
 			t_len = (*ai)->keylen;
-			for (i = data_index; ; i++) {
-				if (i >= s_len || i >= t_len) {
-					r = s_len - t_len;
-					break;
+			if (t_len != -1) {
+				t = (*ai)->data;
+				for (i = data_index; ; i++) {
+					if (i >= s_len || i >= t_len) {
+						r = s_len - t_len;
+						break;
+					}
+					r =  s[i]  - t[i];
+					if (r != 0)
+						break;
 				}
-				r =  s[i]  - t[i];
-				if (r != 0)
+				if (r >= 0) {
+					if (r == 0 && UNIQUE) {
+						/* Put record below existing */
+						ai[1] = ai[0];
+						/* Mark as duplicate - ignore */
+						akh->keylen = -1;
+					} else {
+						ai++;
+					}
 					break;
-			}
-			if (r >= 0) {
-				if (r == 0 && UNIQUE) {
-					/* Put record below existing */
-					ai[1] = ai[0];
-					/* Mark so ignored by output() */
-					akh->keylen = -1;
-				} else {
-					ai++;
 				}
-				break;
 			}
 			ai[1] = ai[0];
 			if (ai == a)

Reply via email to