X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=doio.c;h=e209cf29813831328599727a3c6615e5dd1e7869;hb=6e5a998b1cc5eddc2fb262c2e2e7f989bfb76f23;hp=1495ff58de237402f971c6984aadd09c967788c6;hpb=2585f9a36cbb1a792eb49405e800bf4d68a3291b;p=p5sagit%2Fp5-mst-13.2.git diff --git a/doio.c b/doio.c index 1495ff5..e209cf2 100644 --- a/doio.c +++ b/doio.c @@ -213,6 +213,15 @@ Perl_do_openn(pTHX_ GV *gv, register char *name, I32 len, int as_raw, if (num_svs) { /* New style explict name, type is just mode and discipline/layer info */ STRLEN l = 0; +#ifdef USE_STDIO + if (SvROK(*svp) && !strchr(name,'&')) { + if (ckWARN(WARN_IO)) + Perl_warner(aTHX_ packWARN(WARN_IO), + "Can't open a reference"); + SETERRNO(EINVAL, LIB$_INVARG); + goto say_false; + } +#endif /* USE_STDIO */ name = SvOK(*svp) ? SvPV(*svp, l) : ""; len = (I32)l; name = savepvn(name, len); @@ -781,7 +790,7 @@ Perl_nextargv(pTHX_ register GV *gv) #endif } else { -#if !defined(DOSISH) && !defined(AMIGAOS) +#if !defined(DOSISH) && !defined(AMIGAOS) && !defined(__CYGWIN__) # ifndef VMS /* Don't delete; use automatic file versioning */ if (UNLINK(PL_oldname) < 0) { if (ckWARN_d(WARN_INPLACE)) @@ -895,6 +904,7 @@ Perl_do_pipe(pTHX_ SV *sv, GV *rgv, GV *wgv) goto badexit; IoIFP(rstio) = PerlIO_fdopen(fd[0], "r"); IoOFP(wstio) = PerlIO_fdopen(fd[1], "w"); + IoOFP(rstio) = IoIFP(rstio); IoIFP(wstio) = IoOFP(wstio); IoTYPE(rstio) = IoTYPE_RDONLY; IoTYPE(wstio) = IoTYPE_WRONLY; @@ -1154,7 +1164,7 @@ I32 fd; /* file descriptor */ Off_t length; /* length to set file to */ { struct flock fl; - struct stat filebuf; + Stat_t filebuf; if (PerlLIO_fstat(fd, &filebuf) < 0) return -1;