commit 8ca79a2993e572beb7be56be1b0b95482c3a2431
parent a944b682a694b4e7900c94d6550845f8d52af574
Author: Michael Forney <mforney@mforney.org>
Date: Sat, 14 May 2016 18:56:55 -0700
linecmp: Handle NUL bytes properly
Test case:
if [ "$(printf 'a\na\0b' | ./sort -u)" = "$(printf 'a\na\0b')" ] ; then
echo pass
else
echo fail
fi
Diffstat:
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/libutil/linecmp.c b/libutil/linecmp.c
@@ -10,15 +10,8 @@ linecmp(struct line *a, struct line *b)
{
int res = 0;
- if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len)))) {
- if (a->len > b->len) {
- res = a->data[b->len];
- } else if (b->len > a->len) {
- res = -b->data[a->len];
- } else {
- res = 0;
- }
- }
+ if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len))))
+ res = a->len - b->len;
return res;
}