goto say_false;
}
if (IoIFP(thatio)) {
- fd = PerlIO_fileno(IoIFP(thatio));
+ PerlIO *fp = IoIFP(thatio);
+ /* Flush stdio buffer before dup */
+ PerlIO_seek(fp, 0, SEEK_CUR);
+ fd = PerlIO_fileno(fp);
if (IoTYPE(thatio) == 's')
IoTYPE(io) = 's';
}
}
}
if (fd != PerlIO_fileno(fp)) {
- int pid;
+ Pid_t pid;
SV *sv;
PerlLIO_dup2(PerlIO_fileno(fp), fd);