devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=49e645d695a65c31dc6d32e3d432bc26140fee22

commit 49e645d695a65c31dc6d32e3d432bc26140fee22
Author: Chris Michael <cpmich...@osg.samsung.com>
Date:   Fri Dec 4 11:40:54 2015 -0500

    ecore-evas-wayland: Properly cleanup ecore_wl2 during error
    
    If we fail to connect to an existing wayland display, then we should
    properly cleanup (call ecore_wl2_shutdown) before exiting
    
    @fix
    
    Signed-off-by: Chris Michael <cpmich...@osg.samsung.com>
---
 .../ecore_evas/engines/wayland/ecore_evas_wayland_egl.c      | 12 ++++++------
 .../ecore_evas/engines/wayland/ecore_evas_wayland_shm.c      |  9 ++++-----
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index 8f4fea9..b6b0189 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -146,7 +146,7 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, 
unsigned int parent,
    if (!ewd)
      {
         ERR("Failed to connect to Wayland Display %s", disp_name);
-        return NULL;
+        goto conn_err;
      }
 
    if (!(ee = calloc(1, sizeof(Ecore_Evas))))
@@ -284,12 +284,12 @@ ecore_evas_wayland_egl_new_internal(const char 
*disp_name, unsigned int parent,
 
    return ee;
 
- err:
+err:
    ecore_evas_free(ee);
-   return NULL;
-
- ee_err:
-   ecore_wl_shutdown();
+ee_err:
+   ecore_wl2_display_disconnect(ewd);
+conn_err:
+   ecore_wl2_shutdown();
    return NULL;
 }
 
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
index c516de6..fb1e25b 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
@@ -145,7 +145,7 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, 
unsigned int parent,
    if (!ewd)
      {
         ERR("Failed to connect to Wayland Display %s", disp_name);
-        return NULL;
+        goto conn_err;
      }
 
    if (!(ee = calloc(1, sizeof(Ecore_Evas))))
@@ -280,12 +280,11 @@ ecore_evas_wayland_shm_new_internal(const char 
*disp_name, unsigned int parent,
 
    return ee;
 
- err:
+err:
    ecore_evas_free(ee);
-   return NULL;
-
- ee_err:
+ee_err:
    ecore_wl2_display_disconnect(ewd);
+conn_err:
    ecore_wl2_shutdown();
    return NULL;
 }

-- 


Reply via email to