Subject: [PATCH] avoid double close()
Message-ID: <Pine.LNX.4.10.
10006222251260.322-100000@mojo.covalent.net>
p4raw-id: //depot/cfgperl@6223
IoFLAGS(io) &= ~IOf_NOLINE;
if (writing) {
dTHR;
- if (IoTYPE(io) == 's'
- || (IoTYPE(io) == '>' && S_ISCHR(PL_statbuf.st_mode)) )
+ bool is_reg = IoTYPE(io) == '>' && S_ISCHR(PL_statbuf.st_mode);
+ if (IoTYPE(io) == 's' || is_reg)
{
char *mode;
if (out_raw)
IoIFP(io) = Nullfp;
goto say_false;
}
+ else {
+ if (is_reg)
+ IoIFP(io) = IoOFP(io); /* avoid double close() */
+ }
}
else
IoOFP(io) = fp;