diff options
Diffstat (limited to 'sv.c')
-rw-r--r-- | sv.c | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -8306,7 +8306,8 @@ Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append) the size we read (e.g. CRLF or a gzip layer). */ Stat_t st; - if (!PerlLIO_fstat(PerlIO_fileno(fp), &st) && S_ISREG(st.st_mode)) { + int fd = PerlIO_fileno(fp); + if (fd >= 0 && (PerlLIO_fstat(fd, &st) == 0) && S_ISREG(st.st_mode)) { const Off_t offset = PerlIO_tell(fp); if (offset != (Off_t) -1 && st.st_size + append > offset) { #ifdef PERL_NEW_COPY_ON_WRITE |