zmike pushed a commit to branch efl-1.22.

http://git.enlightenment.org/core/efl.git/commit/?id=6dbf843afbdc4673f2df3eeb8ab637c3a0ceb3c1

commit 6dbf843afbdc4673f2df3eeb8ab637c3a0ceb3c1
Author: Lauro Moura <[email protected]>
Date:   Tue Apr 23 12:12:31 2019 -0300

    csharp: Fix test code memory handling
    
    Summary:
    It was causing the test to crash when running in debug build.
    
    Also some minor fixes cleaning up stuff when exiting.
    
    Fixes T7792.
    
    Reviewers: segfaultxavi, vitor.sousa
    
    Reviewed By: segfaultxavi, vitor.sousa
    
    Subscribers: cedric, #reviewers, #committers
    
    Tags: #efl
    
    Maniphest Tasks: T7792
    
    Differential Revision: https://phab.enlightenment.org/D8679
---
 src/tests/efl_mono/dummy_test_object.eo      |  1 +
 src/tests/efl_mono/libefl_mono_native_test.c | 37 ++++++++++++++++++++++------
 2 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/src/tests/efl_mono/dummy_test_object.eo 
b/src/tests/efl_mono/dummy_test_object.eo
index a50c70e2e6..b5436a636e 100644
--- a/src/tests/efl_mono/dummy_test_object.eo
+++ b/src/tests/efl_mono/dummy_test_object.eo
@@ -1412,6 +1412,7 @@ class Dummy.Test_Object extends Efl.Object implements 
Dummy.Test_Iface {
    }
    implements {
       Efl.Object.constructor;
+      Efl.Object.destructor;
       Efl.Object.provider_find;
       Dummy.Test_Iface.emit_nonconflicted;
       Dummy.Test_Iface.iface_prop { get; set; }
diff --git a/src/tests/efl_mono/libefl_mono_native_test.c 
b/src/tests/efl_mono/libefl_mono_native_test.c
index 17ef5065b2..52d9190994 100644
--- a/src/tests/efl_mono/libefl_mono_native_test.c
+++ b/src/tests/efl_mono/libefl_mono_native_test.c
@@ -162,6 +162,30 @@ _dummy_test_object_efl_object_constructor(Eo *obj, 
Dummy_Test_Object_Data *pd)
    return obj;
 }
 
+static void
+_dummy_test_object_efl_object_destructor(Eo *obj, Dummy_Test_Object_Data *pd)
+{
+   if (pd->stored_value)
+     {
+        eina_value_free(pd->stored_value);
+        pd->stored_value = NULL;
+     }
+
+   if (pd->promise)
+     {
+        eina_promise_reject(pd->promise, ECANCELED);
+        pd->promise = NULL;
+     }
+
+   if (pd->list_for_accessor)
+     {
+        eina_list_free(pd->list_for_accessor);
+        pd->list_for_accessor = NULL;
+     }
+
+   efl_destructor(efl_super(obj, DUMMY_TEST_OBJECT_CLASS));
+}
+
 Efl_Object *_dummy_test_object_return_object(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd)
 {
   return obj;
@@ -3700,11 +3724,11 @@ void _dummy_test_object_set_value_ptr_own(EINA_UNUSED 
Eo *obj, Dummy_Test_Object
 
 void _dummy_test_object_set_value(EINA_UNUSED Eo *obj, Dummy_Test_Object_Data 
*pd, Eina_Value value)
 {
-    if (pd->stored_value) {
-        eina_value_free(pd->stored_value);
-    } else {
-        pd->stored_value = eina_value_new(EINA_VALUE_TYPE_INT);
-    }
+    if (pd->stored_value)
+      eina_value_free(pd->stored_value);
+
+    pd->stored_value = eina_value_new(EINA_VALUE_TYPE_INT);
+
     eina_value_copy(&value, pd->stored_value);
 }
 
@@ -3922,7 +3946,6 @@ int 
_dummy_test_object_dummy_test_iface_iface_prop_get(EINA_UNUSED const Eo *obj
 
 Eo * _dummy_test_object_efl_object_provider_find(EINA_UNUSED const Eo *obj, 
Dummy_Test_Object_Data *pd, const Efl_Class *klass)
 {
-    EINA_LOG_ERR("klass: %p, NUMBERWRAPPER: %p", klass, 
DUMMY_NUMBERWRAPPER_CLASS);
     if (klass == DUMMY_NUMBERWRAPPER_CLASS)
         return pd->provider;
     else if (klass == DUMMY_TEST_IFACE_INTERFACE)
@@ -3932,13 +3955,11 @@ Eo * 
_dummy_test_object_efl_object_provider_find(EINA_UNUSED const Eo *obj, Dumm
 
 Efl_Object *_dummy_test_object_call_find_provider(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd, const Efl_Class *type)
 {
-    printf("CALLING FIND PROVIDER FROM C");
     return efl_provider_find(obj, type);
 }
 
 Efl_Object *_dummy_test_object_call_find_provider_for_iface(Eo *obj, 
EINA_UNUSED Dummy_Test_Object_Data *pd)
 {
-    printf("CALLING FIND PROVIDER FROM C");
     return efl_provider_find(obj, DUMMY_TEST_IFACE_INTERFACE);
 }
 

-- 


Reply via email to