summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-03-24 13:26:10 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-03-24 13:26:59 +0000
commit9deee134c907e4a415f6a644e6e1fcf22dfb9c32 (patch)
tree57b32f40b8fc84cc6ae44122673abde9d9fd0684
parentbb519386fd89aa0ab6930c4de26826c0764bfce9 (diff)
eo - fix err path for eo_isa to unlock shared objects
fix CID 1363294
-rw-r--r--src/lib/eo/eo.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 83d3e5e752..7d8c613502 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -1939,7 +1939,7 @@ efl_isa(const Eo *eo_id, const Efl_Class *klass_id)
1939 EO_OBJ_POINTER_GOTO(eo_id, obj, err_shared_obj); 1939 EO_OBJ_POINTER_GOTO(eo_id, obj, err_shared_obj);
1940 EO_CLASS_POINTER_GOTO(klass_id, klass, err_shared_class); 1940 EO_CLASS_POINTER_GOTO(klass_id, klass, err_shared_class);
1941 if (EINA_UNLIKELY(obj->klass->vtable.size <= klass->class_id)) 1941 if (EINA_UNLIKELY(obj->klass->vtable.size <= klass->class_id))
1942 return EINA_FALSE; 1942 goto err_vtable;
1943 1943
1944 isa = !!obj->klass->vtable.chain[klass->class_id].funcs; 1944 isa = !!obj->klass->vtable.chain[klass->class_id].funcs;
1945 1945
@@ -1947,6 +1947,7 @@ efl_isa(const Eo *eo_id, const Efl_Class *klass_id)
1947 tdata->cache.isa_id = eo_id; 1947 tdata->cache.isa_id = eo_id;
1948 tdata->cache.klass = klass_id; 1948 tdata->cache.klass = klass_id;
1949 tdata->cache.isa = isa; 1949 tdata->cache.isa = isa;
1950err_vtable:
1950 EO_OBJ_DONE(eo_id); 1951 EO_OBJ_DONE(eo_id);
1951 eina_lock_release(&(_eo_table_data_shared_data->obj_lock)); 1952 eina_lock_release(&(_eo_table_data_shared_data->obj_lock));
1952 } 1953 }