diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 692ab3eace..9ec28a1699 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -20,6 +20,8 @@ static Eo_Class_Id _eo_classes_last_id; static Eina_Bool _eo_init_count = 0; static Eo_Op _eo_ops_last_id = 0; +static size_t _eo_sz = 0; + static void _eo_condtor_reset(Eo *obj); static inline void *_eo_data_get(const Eo *obj, const Eo_Class *klass); static inline Eo *_eo_ref(Eo *obj); @@ -1369,15 +1371,13 @@ _eo_data_get(const Eo *obj, const Eo_Class *klass) while (doff_itr->klass) { if (doff_itr->klass == klass) - return ((char *) obj) + EO_ALIGN_SIZE(sizeof(*obj)) + - doff_itr->offset; + return ((char *) obj) + _eo_sz + doff_itr->offset; doff_itr++; } } else { - return ((char *) obj) + EO_ALIGN_SIZE(sizeof(*obj)) + - klass->data_offset; + return ((char *) obj) + _eo_sz + klass->data_offset; } } @@ -1420,6 +1420,8 @@ eo_init(void) eina_init(); + _eo_sz = EO_ALIGN_SIZE(sizeof (Eo)); + _eo_classes = NULL; _eo_classes_last_id = EO_CLASS_IDS_FIRST - 1; _eo_ops_last_id = EO_OP_IDS_FIRST;