Eo: Fixed issue with eo_add ops.
authortasn <tasn>
Thu, 23 Aug 2012 12:14:07 +0000 (12:14 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 23 Aug 2012 12:14:07 +0000 (12:14 +0000)
This "fix" is actually just making sure gcc doesn't optimise things
wrong. If anyone has an idea how to do it better, please let me know.
klass is usually a function and needs to be evaluated before the call to
eo_add_internal.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/PROTO/eobj@75623 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/Eo.h

index b6e10f3..f2a425b 100644 (file)
@@ -562,8 +562,8 @@ EAPI void eo_error_set_internal(const Eo *obj, const char *file, int line);
  */
 #define eo_add(klass, parent, ...) \
    ({ \
-    (void) klass; \
-    eo_add_internal(klass, parent, eo_constructor(), ## __VA_ARGS__, EO_NOOP); \
+    volatile const Eo_Class *_tmp_klass = klass; \
+    eo_add_internal((const Eo_Class *) _tmp_klass, parent, eo_constructor(), ## __VA_ARGS__, EO_NOOP); \
     })
 
 /**
@@ -576,8 +576,8 @@ EAPI void eo_error_set_internal(const Eo *obj, const char *file, int line);
  */
 #define eo_add_custom(klass, parent, ...) \
    ({ \
-    (void) klass; \
-    eo_add_internal(klass, parent, ## __VA_ARGS__, EO_NOOP); \
+    volatile const Eo_Class *_tmp_klass = klass; \
+    eo_add_internal((const Eo_Class *) _tmp_klass, parent, ## __VA_ARGS__, EO_NOOP); \
     })
 
 /**