For some reason,
FILE *fp[2] = { (&__sF[0]), (&__sF[0]) };
was making the compiler define a local uninitialized version of __sF
which ended up in the final executable and broke stdio. This seems like
a compiler bug to me.
static int diffreg(char *file[2])
{
- FILE *fp[2] = { stdin, stdin };
+ FILE *fp[2];
bool binary = false, differ = false;
int status = STATUS_SAME;
+ fp[0] = stdin;
+ fp[1] = stdin;
for (int i = 0; i < 2; i++) {
int fd = open_or_warn_stdin(file[i]);