From 0ff164687104c6e25834f43dfe878b29412025eb Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Thu, 7 Jan 2016 13:00:26 +0000 Subject: [PATCH] Eo: Rearrange class creation code a bit. This is not really needed, I just did it to make it easier for coverity (and future static analysers) to understand that the class id doesn't need to be accessed with a lock. CID1341854 --- src/lib/eo/eo.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index b2a498cc97..ede28631ff 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -1439,9 +1439,10 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...) return NULL; } - eina_spinlock_take(&_eo_class_creation_lock); - klass->header.id = ++_eo_classes_last_id | MASK_CLASS_TAG; { + Eo_Id new_id = ++_eo_classes_last_id | MASK_CLASS_TAG; + eina_spinlock_take(&_eo_class_creation_lock); + /* FIXME: Handle errors. */ size_t arrsize = _eo_classes_last_id * sizeof(*_eo_classes); _Eo_Class **tmp; @@ -1452,9 +1453,12 @@ eo_class_new(const Eo_Class_Description *desc, const Eo_Class *parent_id, ...) memset(tmp, 0, arrsize); _eo_classes = tmp; - _eo_classes[_UNMASK_ID(klass->header.id) - 1] = klass; + _eo_classes[_UNMASK_ID(new_id) - 1] = klass; + + eina_spinlock_release(&_eo_class_creation_lock); + + klass->header.id = new_id; } - eina_spinlock_release(&_eo_class_creation_lock); _eo_class_constructor(klass);