summaryrefslogtreecommitdiff
path: root/perlio.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2003-07-05 18:40:51 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2003-07-05 18:40:51 +0000
commit862083f7e40bc2a9e3b94aedce56c1336e7bdb25 (patch)
treee6b6972e822ecd085acc58afd935bc721663b6c1 /perlio.c
parentdb76e01e0478bf57f584c7a46fe5499fb12f1b27 (diff)
downloadperl-862083f7e40bc2a9e3b94aedce56c1336e7bdb25.tar.gz
Make a read from a write-only fh to set errno
(found by Gisle) p4raw-id: //depot/perl@20019
Diffstat (limited to 'perlio.c')
-rw-r--r--perlio.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/perlio.c b/perlio.c
index 78b2d18be5..b0649df087 100644
--- a/perlio.c
+++ b/perlio.c
@@ -2033,8 +2033,11 @@ PerlIOBase_read(pTHX_ PerlIO *f, void *vbuf, Size_t count)
{
STDCHAR *buf = (STDCHAR *) vbuf;
if (f) {
- if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD))
+ if (!(PerlIOBase(f)->flags & PERLIO_F_CANREAD)) {
+ PerlIOBase(f)->flags |= PERLIO_F_ERROR;
+ SETERRNO(EBADF, SS_IVCHAN);
return 0;
+ }
while (count > 0) {
SSize_t avail = PerlIO_get_cnt(f);
SSize_t take = 0;