The Stdio.Buffer output callback is required even for buffers which are not malloced. Now, the following test case
Stdio.Buffer b = Stdio.Buffer("foo"); b->__set_on_write(lambda(mixed ... args) { werror("New Data added.\n") }); b->add("bar");
does not work anymore. I believe this is requird by the Stdio.File buffer mode.
You also removed the __output variable which means that the GC cannot discover cycles anymore.
I think it would be best to simply revert that change.
Arne