diff --git a/usr.bin/comm/comm.c b/usr.bin/comm/comm.c --- a/usr.bin/comm/comm.c +++ b/usr.bin/comm/comm.c @@ -129,12 +129,12 @@ /* if one file done, display the rest of the other file */ if (n1 < 0) { - if (n2 >= 0 && col2 != NULL) + if (n2 >= 0) show(fp2, argv[1], col2, &line2, &line2len); break; } if (n2 < 0) { - if (n1 >= 0 && col1 != NULL) + if (n1 >= 0) show(fp1, argv[0], col1, &line1, &line1len); break; } @@ -206,10 +206,12 @@ ssize_t n; do { - (void)printf("%s%s\n", offset, *bufp); + /* offset is NULL when draining fp, not printing */ + if (offset != NULL) + (void)printf("%s%s\n", offset, *bufp); if ((n = getline(bufp, buflenp, fp)) < 0) break; - if (n > 0 && (*bufp)[n - 1] == '\n') + if (n > 0 && offset != NULL && (*bufp)[n - 1] == '\n') (*bufp)[n - 1] = '\0'; } while (1); if (ferror(fp))