bug fix, cp_ioreset(): fclosing an already closed stream

causing memory corruption when using `>&' stderr redirection
This commit is contained in:
rlar 2012-07-22 11:56:25 +02:00
parent 4d0d0fafb9
commit cd2cab2a94
1 changed files with 8 additions and 10 deletions

View File

@ -184,21 +184,19 @@ error: wl_free(wl);
void
cp_ioreset(void)
{
if (cp_in != cp_curin) {
if (cp_in != cp_curin)
if (cp_in)
fclose(cp_in);
cp_in = cp_curin;
}
if (cp_out != cp_curout) {
if (cp_out != cp_curout)
if (cp_out)
fclose(cp_out);
cp_out = cp_curout;
}
if (cp_err != cp_curerr) {
if (cp_err)
if (cp_err != cp_curerr)
if (cp_err && cp_err != cp_out)
fclose(cp_err);
cp_err = cp_curerr;
}
cp_in = cp_curin;
cp_out = cp_curout;
cp_err = cp_curerr;
/*** Minor bug here... */
out_isatty = TRUE;