raster pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=47aaa31886e77286cb3b55089bc96f416c4d2e96

commit 47aaa31886e77286cb3b55089bc96f416c4d2e96
Author: Carsten Haitzler <ras...@rasterman.com>
Date:   Sun Sep 5 19:25:24 2021 +0100

    e utils - ensure the delays dialog array does not have refs to freed dia
---
 src/bin/e_utils.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/bin/e_utils.c b/src/bin/e_utils.c
index 637579fc9..c44f8364c 100644
--- a/src/bin/e_utils.c
+++ b/src/bin/e_utils.c
@@ -748,10 +748,16 @@ _e_util_cb_delayed_del(void *data EINA_UNUSED)
 }
 
 static void
-_e_util_cb_delayed_cancel(void *data, void *obj EINA_UNUSED)
+_e_util_cb_delayed_cancel(void *data EINA_UNUSED, void *obj)
 {
-   unsigned long c = (unsigned long)data;
-   if (_delay_del_array) eina_array_data_set(_delay_del_array, c, NULL);
+   unsigned long c = eina_array_count_get(_delay_del_array);
+   unsigned long i;
+
+   for (i = 0; i < c; i++)
+     {
+        if (eina_array_data_get(_delay_del_array, i) == obj)
+          eina_array_data_set(_delay_del_array, i, NULL);
+     }
 }
 
 E_API void
@@ -771,10 +777,7 @@ e_util_defer_object_del(E_Object *obj)
         if (_delay_del_array)
           {
              if (eina_array_push(_delay_del_array, obj))
-               {
-                  unsigned long c = eina_array_count_get(_delay_del_array);
-                  e_object_delfn_add(obj, _e_util_cb_delayed_cancel, (void 
*)c);
-               }
+               e_object_delfn_add(obj, _e_util_cb_delayed_cancel, NULL);
           }
      }
 }

-- 


Reply via email to