(compare_files): Don't assume that the difference
authorJim Meyering <jim@meyering.net>
Mon, 21 Jan 2002 22:00:32 +0000 (22:00 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 21 Jan 2002 22:00:32 +0000 (22:00 +0000)
between two size_t values can be stored in an int; this doesn't
work, for example, on 64-bit Solaris.

src/comm.c

index 183ce35..568968f 100644 (file)
@@ -1,5 +1,5 @@
 /* comm -- compare two sorted files line by line.
-   Copyright (C) 86, 90, 91, 1995-2001 Free Software Foundation, Inc.
+   Copyright (C) 86, 90, 91, 1995-2002 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -186,7 +186,9 @@ compare_files (char **infiles)
              size_t len = min (thisline[0]->length, thisline[1]->length) - 1;
              order = memcmp (thisline[0]->buffer, thisline[1]->buffer, len);
              if (order == 0)
-               order = thisline[0]->length - thisline[1]->length;
+               order = (thisline[0]->length < thisline[1]->length
+                        ? -1
+                        : thisline[0]->length != thisline[1]->length);
            }
        }