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)
      {

-- 


Reply via email to