eo2: do not call eo2_do_end() if eo2_do_start() fail
authorJérémy Zurcher <jeremy@asynk.ch>
Thu, 26 Dec 2013 15:16:55 +0000 (16:16 +0100)
committerTom Hacohen <tom@stosb.com>
Thu, 10 Apr 2014 03:20:16 +0000 (04:20 +0100)
src/lib/eo/Eo.h

index 49b5179..da420c7 100644 (file)
@@ -685,21 +685,22 @@ EAPI int eo2_call_stack_depth();
 #define EO2_DO_CLEANUP __attribute__((cleanup(eo2_do_end)))
 
 // eo object method calls batch,
-// DO NOT use return statement in it, use break if necessary
 #define eo2_do(objid, ...)                            \
   do                                                  \
     {                                                 \
+       if (!eo2_do_start(objid, EINA_FALSE)) break;   \
        Eo *_objid_ EO2_DO_CLEANUP = objid;            \
-       if (!eo2_do_start(_objid_, EINA_FALSE)) break; \
        __VA_ARGS__;                                   \
+       (void) _objid_;                                \
     } while (0)
 
 #define eo2_do_super(objid, ...)                      \
   do                                                  \
     {                                                 \
+       if (!eo2_do_start(objid, EINA_TRUE)) break;    \
        Eo *_objid_ EO2_DO_CLEANUP = objid;            \
-       if (!eo2_do_start(_objid_, EINA_TRUE)) break;  \
        __VA_ARGS__;                                   \
+       (void) _objid_;                                \
     } while (0)
 
 // FIXME