Commit 01543a00 authored by Stephen R. van den Berg's avatar Stephen R. van den Berg

Stdio.Buffer: Check for PIKE_T_FUNCTION before acting on objects.

parent 082c9bea
......@@ -455,16 +455,14 @@ PIKECLASS Buffer
PMOD_EXPORT void io_actually_trigger_output( Buffer *io )
{
if (UNLIKELY(!io->output.u.object->prog)) {
/* Destructed object. */
free_svalue(&io->output);
SET_SVAL(io->output, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
return;
}
if (io->output.tu.named_type == PIKE_T_FUNCTION) {
if (UNLIKELY(!io->output.u.object->prog)) {
/* Destructed object. */
free_svalue(&io->output);
return;
}
if ( io->output.u.object ) {
move_svalue(Pike_sp++, &io->output);
SET_SVAL(io->output, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
apply_svalue(Pike_sp-1, 0);
pop_n_elems(2);
}
......@@ -990,11 +988,8 @@ PIKECLASS Buffer
if (f)
assign_svalue(&io->output, f);
else {
if (io->output.u.object) {
if (io->output.tu.named_type == PIKE_T_FUNCTION)
free_svalue(&io->output);
io->output.u.object = 0; // free_svalue() puts in -1
}
SET_SVAL(io->output, PIKE_T_INT, NUMBER_NUMBER, integer, 0);
}
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment