jeyzu pushed a commit to branch master.

commit 8619bf1323641865f0ec5b5add02399fe8c04bf7
Author: Jérémy Zurcher <[email protected]>
Date:   Tue Jun 18 00:08:58 2013 +0200

    eo_class_new: reorder last operations in class creation
---
 src/lib/eo/eo.c | 44 ++++++++++++++++++++------------------------
 1 file changed, 20 insertions(+), 24 deletions(-)

diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 841645d..221f8d7 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -966,6 +966,7 @@ eo_class_new(const Eo_Class_Description *desc, const 
Eo_Class *parent_id, ...)
      }
 
    klass = calloc(1, _eo_class_sz + extn_sz + mro_sz + mixins_sz);
+   EINA_MAGIC_SET(klass, EO_CLASS_EINA_MAGIC);
    klass->parent = parent;
    klass->desc = desc;
    klass->extensions = (const _Eo_Class **) ((char *) klass + _eo_class_sz);
@@ -1031,27 +1032,11 @@ eo_class_new(const Eo_Class_Description *desc, const 
Eo_Class *parent_id, ...)
      }
 
    klass->obj_size = _eo_sz + extn_data_off;
-
-   eina_lock_take(&_eo_class_creation_lock);
-
-   klass->class_id = ++_eo_classes_last_id;
-
+   if (getenv("EO_DEBUG"))
      {
-        /* FIXME: Handle errors. */
-        size_t arrsize = _eo_classes_last_id * sizeof(*_eo_classes);
-        _Eo_Class **tmp;
-        tmp = realloc(_eo_classes, arrsize);
-
-        /* If it's the first allocation, memset. */
-        if (!_eo_classes)
-           memset(tmp, 0, arrsize);
-
-        _eo_classes = tmp;
-        _eo_classes[klass->class_id - 1] = klass;
+        fprintf(stderr, "Eo class '%s' will take %u bytes per object.\n",
+                desc->name, klass->obj_size);
      }
-   eina_lock_release(&_eo_class_creation_lock);
-
-   EINA_MAGIC_SET(klass, EO_CLASS_EINA_MAGIC);
 
    _eo_class_base_op_init(klass);
    /* Flatten the function array */
@@ -1090,13 +1075,24 @@ eo_class_new(const Eo_Class_Description *desc, const 
Eo_Class *parent_id, ...)
           }
      }
 
-   _eo_class_constructor(klass);
-
-   if (getenv("EO_DEBUG"))
+   eina_lock_take(&_eo_class_creation_lock);
+   klass->class_id = ++_eo_classes_last_id;
      {
-        fprintf(stderr, "Eo class '%s' will take %u bytes per object.\n",
-                desc->name, klass->obj_size);
+        /* FIXME: Handle errors. */
+        size_t arrsize = _eo_classes_last_id * sizeof(*_eo_classes);
+        _Eo_Class **tmp;
+        tmp = realloc(_eo_classes, arrsize);
+
+        /* If it's the first allocation, memset. */
+        if (!_eo_classes)
+           memset(tmp, 0, arrsize);
+
+        _eo_classes = tmp;
+        _eo_classes[klass->class_id - 1] = klass;
      }
+   eina_lock_release(&_eo_class_creation_lock);
+
+   _eo_class_constructor(klass);
 
    return _eo_class_id_get(klass);
 }

-- 

------------------------------------------------------------------------------
This SF.net email is sponsored by Windows:

Build for Windows Store.

http://p.sf.net/sfu/windows-dev2dev

Reply via email to