- while (*thisline[0] || *thisline[1]) {
- int order = 0;
-
- i = 0;
- if (feof(streams[0])) i |= BB_EOF_0;
- if (feof(streams[1])) i |= BB_EOF_1;
-
- if (!*thisline[0])
- order = 1;
- else if (!*thisline[1])
- order = -1;
- else {
- int tl0_len, tl1_len;
- tl0_len = strlen(thisline[0]);
- tl1_len = strlen(thisline[1]);
- order = memcmp(thisline[0], thisline[1], tl0_len < tl1_len ? tl0_len : tl1_len);
- if (!order)
- order = tl0_len < tl1_len ? -1 : tl0_len != tl1_len;
+ order = 0;
+ thisline[1] = thisline[0] = NULL;
+ while (1) {
+ if (order <= 0) {
+ free(thisline[0]);
+ thisline[0] = xmalloc_fgetline(stream[0]);
+ }
+ if (order >= 0) {
+ free(thisline[1]);
+ thisline[1] = xmalloc_fgetline(stream[1]);