summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChip Salzenberg <chip@perl.com>1997-03-22 07:42:31 +1200
committerChip Salzenberg <chip@atlantic.net>1997-03-22 15:34:25 +1200
commit4b65379bc43430e952dd16dee404322de24998dc (patch)
tree70a70b5aea627ada9fbb24c8fa84ae36a2bf60cf
parentb226d704a95b67a31c9c67a9ab25966507c62295 (diff)
downloadperl-4b65379bc43430e952dd16dee404322de24998dc.tar.gz
Automatically flush on C< $| = 1 >
-rw-r--r--mg.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/mg.c b/mg.c
index c3e6153b4e..5b25c40d0c 100644
--- a/mg.c
+++ b/mg.c
@@ -1374,9 +1374,18 @@ MAGIC* mg;
IoPAGE(GvIOp(defoutgv)) = (long)(SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv));
break;
case '|':
- IoFLAGS(GvIOp(defoutgv)) &= ~IOf_FLUSH;
- if ((SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) != 0) {
- IoFLAGS(GvIOp(defoutgv)) |= IOf_FLUSH;
+ {
+ IO *io = GvIOp(defoutgv);
+ if ((SvIOK(sv) ? SvIVX(sv) : sv_2iv(sv)) == 0)
+ IoFLAGS(io) &= ~IOf_FLUSH;
+ else {
+ if (!(IoFLAGS(io) & IOf_FLUSH)) {
+ PerlIO *ofp = IoOFP(io);
+ if (ofp)
+ (void)PerlIO_flush(ofp);
+ IoFLAGS(io) |= IOf_FLUSH;
+ }
+ }
}
break;
case '*':