devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7fd450e6902bf3edc001f17692fc67a95cd1a160

commit 7fd450e6902bf3edc001f17692fc67a95cd1a160
Author: Srivardhan Hebbar <[email protected]>
Date:   Thu Sep 18 11:03:26 2014 -0400

    ecore_wayland: Added goto in ecore_init for exit to reduce repetition of 
code.
    
    Summary:
    Instead of repeating the clean-up code if any initialization fails in the 
init function, I've moved those to one location and added goto.
    
    Signed-off-by: Srivardhan Hebbar <[email protected]>
    
    Reviewers: devilhorns
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D1461
---
 src/lib/ecore_wayland/ecore_wl.c | 53 +++++++++++++++++-----------------------
 1 file changed, 23 insertions(+), 30 deletions(-)

diff --git a/src/lib/ecore_wayland/ecore_wl.c b/src/lib/ecore_wayland/ecore_wl.c
index de46347..6295384 100644
--- a/src/lib/ecore_wayland/ecore_wl.c
+++ b/src/lib/ecore_wayland/ecore_wl.c
@@ -113,27 +113,19 @@ ecore_wl_init(const char *name)
    if (_ecore_wl_log_dom < 0)
      {
         EINA_LOG_ERR("Cannot create a log domain for Ecore Wayland");
-        eina_shutdown();
-        return --_ecore_wl_init_count;
+        goto exit_eina;
      }
 
    if (!ecore_init())
      {
         ERR("Could not initialize ecore");
-        eina_log_domain_unregister(_ecore_wl_log_dom);
-        _ecore_wl_log_dom = -1;
-        eina_shutdown();
-        return --_ecore_wl_init_count;
+        goto exit_ecore;
      }
 
    if (!ecore_event_init())
      {
         ERR("Could not initialize ecore_event");
-        eina_log_domain_unregister(_ecore_wl_log_dom);
-        _ecore_wl_log_dom = -1;
-        ecore_shutdown();
-        eina_shutdown();
-        return --_ecore_wl_init_count;
+        goto exit_ecore_event;
      }
 
    if (!ECORE_WL_EVENT_MOUSE_IN)
@@ -159,12 +151,7 @@ ecore_wl_init(const char *name)
    if (!(_ecore_wl_disp = malloc(sizeof(Ecore_Wl_Display))))
      {
         ERR("Could not allocate memory for Ecore_Wl_Display structure");
-        eina_log_domain_unregister(_ecore_wl_log_dom);
-        _ecore_wl_log_dom = -1;
-        ecore_event_shutdown();
-        ecore_shutdown();
-        eina_shutdown();
-        return --_ecore_wl_init_count;
+        goto exit_ecore_disp;
      }
 
    memset(_ecore_wl_disp, 0, sizeof(Ecore_Wl_Display));
@@ -172,12 +159,7 @@ ecore_wl_init(const char *name)
    if (!(_ecore_wl_disp->wl.display = wl_display_connect(name)))
      {
         ERR("Could not connect to Wayland display");
-        eina_log_domain_unregister(_ecore_wl_log_dom);
-        _ecore_wl_log_dom = -1;
-        ecore_event_shutdown();
-        ecore_shutdown();
-        eina_shutdown();
-        return --_ecore_wl_init_count;
+        goto exit_ecore_disp_connect;
      }
 
    _ecore_wl_disp->fd = wl_display_get_fd(_ecore_wl_disp->wl.display);
@@ -198,13 +180,7 @@ ecore_wl_init(const char *name)
    if (!_ecore_wl_xkb_init(_ecore_wl_disp))
      {
         ERR("Could not initialize XKB");
-        free(_ecore_wl_disp);
-        eina_log_domain_unregister(_ecore_wl_log_dom);
-        _ecore_wl_log_dom = -1;
-        ecore_event_shutdown();
-        ecore_shutdown();
-        eina_shutdown();
-        return --_ecore_wl_init_count;
+        goto exit_ecore_disp_connect;
      }
 
    _ecore_wl_window_init();
@@ -220,6 +196,23 @@ ecore_wl_init(const char *name)
      }
 
    return _ecore_wl_init_count;
+
+exit_ecore_disp_connect:
+   free(_ecore_wl_disp);
+
+exit_ecore_disp:
+   ecore_event_shutdown();
+
+exit_ecore_event:
+   ecore_shutdown();
+
+exit_ecore:
+   eina_log_domain_unregister(_ecore_wl_log_dom);
+   _ecore_wl_log_dom = -1;
+
+exit_eina:
+   eina_shutdown();
+   return --_ecore_wl_init_count;
 }
 
 EAPI int

-- 


Reply via email to