ecore_pipe.c: fixed fd handler increasing issue.
authorDaniel Juyung Seo <seojuyung2@gmail.com>
Wed, 22 May 2013 11:40:56 +0000 (20:40 +0900)
committerDaniel Juyung Seo <seojuyung2@gmail.com>
Wed, 22 May 2013 11:46:19 +0000 (20:46 +0900)
Call _ecore_pipe_unhandle() when you return from _ecore_pipe_read() or the fd will never be closed.
This fixed increasing numbers of fd handler issue when you call ecore_pipe_add/del repeatedly.
In that case, reusing ecore_pipe is recommended though.

ChangeLog
NEWS
src/lib/ecore/ecore_pipe.c

index 20a5f11..760271c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-22  Daniel Juyung Seo (SeoZ)
+
+        * Fix fd handler increase issue when ecore_pipe_add/del is called repeatedly.
+
 2013-05-22  ChunEon Park (Hermet)
 
         * Edje textblock: keep the text styles when new font by the text class is applied.
diff --git a/NEWS b/NEWS
index 899d3b2..e54766b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -272,3 +272,4 @@ Fixes:
     * Ecore-imf: fix crash when ecore_imf_context_del is called in ecore_imf_context_input_panel_callback_call
     * Edje textblock: Fixed issue with quoted formats.
     * Edje textblock: Keep the text styles when new font by the text class is applied.
+    * Fix fd handler increase issue when ecore_pipe_add/del is called repeatedly.
index 6e89fa8..705673b 100644 (file)
@@ -656,6 +656,7 @@ _ecore_pipe_read(void             *data,
               else if ((ret == PIPE_FD_ERROR) &&
                        ((errno == EINTR) || (errno == EAGAIN)))
                 {
+                    _ecore_pipe_unhandle(p);
                    return ECORE_CALLBACK_RENEW;
                 }
               else
@@ -663,6 +664,7 @@ _ecore_pipe_read(void             *data,
                    ERR("An unhandled error (ret: %i errno: %i [%s])"
                        "occurred while reading from the pipe the length",
                        (int)ret, errno, strerror(errno));
+                    _ecore_pipe_unhandle(p);
                    return ECORE_CALLBACK_RENEW;
                 }
 #else