for (key = keyhead.next; key; key = key->next, ++iter)
{
+ int comparable_lengths = 1;
+
ignore = key->ignore;
translate = (unsigned char *) key->translate;
Handling this case here avoids what might be an invalid length \
comparison below. */ \
if (diff == 0 && texta == lima && textb == limb) \
- return 0; \
+ comparable_lengths = 0; \
} \
while (0)
if (diff)
return key->reverse ? -diff : diff;
- if ((diff = lena - lenb) != 0)
+ if (comparable_lengths && (diff = lena - lenb) != 0)
return key->reverse ? -diff : diff;
}
if (nlines == 2)
{
if (compare (&lines[0], &lines[1]) > 0)
- *temp = lines[0], lines[0] = lines[1], lines[1] = *temp;
+ {
+ *temp = lines[0];
+ lines[0] = lines[1];
+ lines[1] = *temp;
+ }
return;
}