diff --git a/libutil/linecmp.c b/libutil/linecmp.c index cba27d1..f5a6cf9 100644 --- a/libutil/linecmp.c +++ b/libutil/linecmp.c @@ -10,10 +10,14 @@ linecmp(struct line *a, struct line *b) { int res = 0; - if (!(res = memcmp(a->data, b->data, MIN(a->len, b->len))) && - a->len != b->len) { - res = a->data[MIN(a->len, b->len) - 1] - - b->data[MIN(a->len, b->len) - 1]; + 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; + } } return res;