bu5hm4n pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=13d52be7e6a2a7f761996bb850b10127378b190f

commit 13d52be7e6a2a7f761996bb850b10127378b190f
Author: Marcel Hollerbach <[email protected]>
Date:   Fri Apr 3 17:20:34 2020 +0200

    ecore_evas: fix leaks in macos and win32
    
    memory is duplicated in eina_content_new.
    
    Reviewed-by: Mike Blumenkrantz <[email protected]>
    Differential Revision: https://phab.enlightenment.org/D11641
---
 src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c | 2 ++
 src/modules/ecore_evas/engines/win32/ecore_evas_win32.c | 1 +
 2 files changed, 3 insertions(+)

diff --git a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c 
b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
index 05740c306b..51fe657f39 100644
--- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
+++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
@@ -531,10 +531,12 @@ _ecore_evas_cocoa_selection_request(Ecore_Evas *ee 
EINA_UNUSED, unsigned int sea
              slice.mem = data;
           }
         content = eina_content_new(eina_rw_slice_slice_get(slice), mime_type);
+        free(slice.mem); //memory got duplicated in eina_content_new
         if (!content) // construction can fail because of some validation 
reasons
           eina_promise_reject(promise, ecore_evas_no_matching_type);
         else
           eina_promise_resolve(promise, eina_value_content_init(content));
+
      }
    return future;
 }
diff --git a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c 
b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
index 41a0fad65e..638d4e74f7 100644
--- a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
+++ b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
@@ -1307,6 +1307,7 @@ _ecore_evas_win32_selection_request(Ecore_Evas *ee 
EINA_UNUSED, unsigned int sea
                   slice.mem = data;
                }
              content = eina_content_new(eina_rw_slice_slice_get(slice), 
mime_type);
+             free(slice.mem); //memory got duplicated in eina_content_new
              if (!content) // construction can fail because of some validation 
reasons
                eina_promise_reject(promise, ecore_evas_no_matching_type);
              else

-- 


Reply via email to