diff options
author | Christian Hansen <christian.hansen@mac.com> | 2012-03-26 13:47:16 +0200 |
---|---|---|
committer | Leon Timmermans <fawaka@gmail.com> | 2012-03-26 19:18:10 +0200 |
commit | 3215bcc0361b22c5ada5cfcb6bd3b56b8afc8ce1 (patch) | |
tree | b9127f245e9d1b329fe6b671c13939bf22ac26c5 | |
parent | 826b3747f7551c014141c503741687c6723cbdfc (diff) | |
download | perl-3215bcc0361b22c5ada5cfcb6bd3b56b8afc8ce1.tar.gz |
Set PERLIO_F_EOF flag in PerlIO::scalar
PerlIO::scalar didn't set the PERLIO_F_EOF flag, making PerlIO_eof() unreliable.
-rw-r--r-- | ext/PerlIO-scalar/scalar.pm | 2 | ||||
-rw-r--r-- | ext/PerlIO-scalar/scalar.xs | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/ext/PerlIO-scalar/scalar.pm b/ext/PerlIO-scalar/scalar.pm index dac7491e0e..aadfdb663f 100644 --- a/ext/PerlIO-scalar/scalar.pm +++ b/ext/PerlIO-scalar/scalar.pm @@ -1,5 +1,5 @@ package PerlIO::scalar; -our $VERSION = '0.13'; +our $VERSION = '0.14'; require XSLoader; XSLoader::load(); 1; diff --git a/ext/PerlIO-scalar/scalar.xs b/ext/PerlIO-scalar/scalar.xs index eac682b5c3..d324bdd15f 100644 --- a/ext/PerlIO-scalar/scalar.xs +++ b/ext/PerlIO-scalar/scalar.xs @@ -125,6 +125,18 @@ PerlIOScalar_tell(pTHX_ PerlIO * f) return s->posn; } +IV +PerlIOScalar_eof(pTHX_ PerlIO * f) +{ + if (PerlIOBase(f)->flags & PERLIO_F_CANREAD) { + PerlIOScalar *s = PerlIOSelf(f, PerlIOScalar); + char *p; + STRLEN len; + p = SvPV(s->var, len); + return len - (STRLEN)(s->posn) <= 0; + } + return 1; +} SSize_t PerlIOScalar_read(pTHX_ PerlIO *f, void *vbuf, Size_t count) @@ -343,7 +355,7 @@ PERLIO_FUNCS_DECL(PerlIO_scalar) = { PerlIOScalar_close, PerlIOScalar_flush, PerlIOScalar_fill, - PerlIOBase_eof, + PerlIOScalar_eof, PerlIOBase_error, PerlIOBase_clearerr, PerlIOBase_setlinebuf, |