cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=266dabc0965c3920bf6681205c776e5ade0a9704
commit 266dabc0965c3920bf6681205c776e5ade0a9704 Author: Cedric BAIL <[email protected]> Date: Tue May 1 13:30:44 2018 -0700 ecore: force close during invalidate of Efl.Io.Buffered_Stream. Differential Revision: https://phab.enlightenment.org/D6074 --- src/lib/ecore/efl_io_buffered_stream.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore/efl_io_buffered_stream.c b/src/lib/ecore/efl_io_buffered_stream.c index 3a0921f959..a02b6bbb3e 100644 --- a/src/lib/ecore/efl_io_buffered_stream.c +++ b/src/lib/ecore/efl_io_buffered_stream.c @@ -16,6 +16,7 @@ typedef struct Eo *outgoing; Eo *sender; Eo *receiver; + Eina_Bool is_closing; Eina_Bool closed; Eina_Bool eos; Eina_Bool can_read; @@ -151,6 +152,9 @@ _efl_io_buffered_stream_efl_object_finalize(Eo *o, Efl_Io_Buffered_Stream_Data * EOLIAN static void _efl_io_buffered_stream_efl_object_invalidate(Eo *o, Efl_Io_Buffered_Stream_Data *pd) { + if (!efl_io_closer_closed_get(o)) + efl_io_closer_close(o); + if (pd->inner_io) { efl_event_callback_array_del(pd->inner_io, _efl_io_buffered_stream_inner_io_cbs(), o); @@ -168,7 +172,6 @@ _efl_io_buffered_stream_efl_object_invalidate(Eo *o, Efl_Io_Buffered_Stream_Data if (!pd->is_finished) { - fprintf(stderr, "forced finish\n"); pd->is_finished = EINA_TRUE; efl_event_callback_call(o, EFL_IO_BUFFERED_STREAM_EVENT_FINISHED, NULL); } @@ -182,6 +185,8 @@ _efl_io_buffered_stream_efl_io_closer_close(Eo *o, Efl_Io_Buffered_Stream_Data * Eina_Error err = 0; EINA_SAFETY_ON_TRUE_RETURN_VAL(pd->closed, EINVAL); + if (pd->is_closing) return 0; + pd->is_closing = EINA_TRUE; if (pd->outgoing) { --
