From a7ad7697ebccaf2358437c62f0ec13e910e3f985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Mon, 17 Jun 2013 10:55:30 +0200 Subject: eo: reorder last operations in class creation --- src/lib/eo/eo.c | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 83d55bdb34..0bcc7cc0c9 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); @@ -1032,26 +1033,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 */ @@ -1092,11 +1078,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); return _eo_class_id_get(klass); } -- cgit v1.2.1