lauromoura pushed a commit to branch master.

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

commit d4d9ecc92fe897e29a7c14c5856db617e8a16340
Author: Lauro Moura <[email protected]>
Date:   Tue Nov 5 11:59:46 2019 -0300

    eolian: Imply @no_unused if @move in return.
    
    Summary:
    This makes sure the user is warned if it ignores a return value that
    could potentially be a memory leak.
    
    This also makes possible to use `value {}` blocks with `@move` instead
    of value-less properties with `@no_unused`.
    
    Also removed the `@move` from canvas_text_async_layout as it is ignored
    in the only place it is used.
    
    Reviewers: q66
    
    Reviewed By: q66
    
    Subscribers: #reviewers, #committers, bu5hm4n, felipealmeida, cedric, 
segfaultxavi
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D10601
---
 src/bin/eolian/headers.c                         |  2 +-
 src/lib/evas/canvas/efl_canvas_text.eo           |  2 +-
 src/tests/efl_mono/dummy_test_object.c           | 12 +++++++++---
 src/tests/eolian/data/function_as_argument_ref.h |  2 +-
 src/tests/eolian/data/struct_ref.h               |  2 +-
 src/tests/eolian/data/typedef_ref.h              |  2 +-
 6 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/bin/eolian/headers.c b/src/bin/eolian/headers.c
index 3a84e0ac0b..ead40d8f75 100644
--- a/src/bin/eolian/headers.c
+++ b/src/bin/eolian/headers.c
@@ -168,7 +168,7 @@ _gen_func(const Eolian_State *state, const Eolian_Function 
*fid,
      eina_strbuf_append(buf, "void");
 
    eina_strbuf_append(buf, ")");
-   if (!eolian_function_return_allow_unused(fid, ftype))
+   if (!eolian_function_return_allow_unused(fid, ftype) || return_move)
      {
         if (!flagbuf)
           flagbuf = eina_strbuf_new();
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo 
b/src/lib/evas/canvas/efl_canvas_text.eo
index 511dec2587..9bac9feb8e 100644
--- a/src/lib/evas/canvas/efl_canvas_text.eo
+++ b/src/lib/evas/canvas/efl_canvas_text.eo
@@ -222,7 +222,7 @@ class @beta Efl.Canvas.Text extends Efl.Canvas.Object 
implements Efl.Text,
            Once layout is complete, the result is returned as @Eina.Rect,
            with w, h fields set.
          ]]
-         return: future<Eina.Rect> @move; [[Future for layout result]]
+         return: future<Eina.Rect>; [[Future for layout result]]
       }
    }
    implements {
diff --git a/src/tests/efl_mono/dummy_test_object.c 
b/src/tests/efl_mono/dummy_test_object.c
index 54a2c2c917..fb87a8c1bd 100644
--- a/src/tests/efl_mono/dummy_test_object.c
+++ b/src/tests/efl_mono/dummy_test_object.c
@@ -217,12 +217,16 @@ void _dummy_test_object_out_own_string(EINA_UNUSED Eo 
*obj, EINA_UNUSED Dummy_Te
 
 void _dummy_test_object_call_in_string(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd, const char *str)
 {
-  dummy_test_object_in_string(obj, str);
+  char *ptr = dummy_test_object_in_string(obj, str);
+  if (ptr)
+    free(ptr);
 }
 
 void _dummy_test_object_call_in_own_string(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd, char *str)
 {
-  dummy_test_object_in_own_string(obj, str);
+  char *ptr = dummy_test_object_in_own_string(obj, str);
+  if (ptr)
+    free(ptr);
 }
 
 const char *_dummy_test_object_call_return_string(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd)
@@ -252,7 +256,9 @@ char *_dummy_test_object_call_out_own_string(Eo *obj, 
EINA_UNUSED Dummy_Test_Obj
 // Stringshare virtual test helpers
 void _dummy_test_object_call_in_stringshare(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd, Eina_Stringshare *str)
 {
-  dummy_test_object_in_stringshare(obj, str);
+  Eina_Stringshare *ptr = dummy_test_object_in_stringshare(obj, str);
+  if (ptr)
+    eina_stringshare_del(ptr);
 }
 
 void _dummy_test_object_call_in_own_stringshare(Eo *obj, EINA_UNUSED 
Dummy_Test_Object_Data *pd, Eina_Stringshare *str)
diff --git a/src/tests/eolian/data/function_as_argument_ref.h 
b/src/tests/eolian/data/function_as_argument_ref.h
index 2b677aefb3..b93a3e02ed 100644
--- a/src/tests/eolian/data/function_as_argument_ref.h
+++ b/src/tests/eolian/data/function_as_argument_ref.h
@@ -19,6 +19,6 @@ EWAPI const Efl_Class *function_as_argument_class_get(void);
 
 EOAPI void function_as_argument_set_cb(Eo *obj, void *cb_data, SimpleFunc cb, 
Eina_Free_Cb cb_free_cb);
 
-EOAPI char *function_as_argument_call_cb(Eo *obj, int a, double b) 
EFL_TRANSFER_OWNERSHIP;
+EOAPI char *function_as_argument_call_cb(Eo *obj, int a, double b) 
EFL_TRANSFER_OWNERSHIP EINA_WARN_UNUSED_RESULT;
 
 #endif
diff --git a/src/tests/eolian/data/struct_ref.h 
b/src/tests/eolian/data/struct_ref.h
index ddcb20a752..ec7ea52671 100644
--- a/src/tests/eolian/data/struct_ref.h
+++ b/src/tests/eolian/data/struct_ref.h
@@ -38,7 +38,7 @@ EWAPI const Efl_Class *struct_class_get(void);
  *
  * @ingroup Struct
  */
-EOAPI char *struct_foo(Eo *obj, int idx) EFL_TRANSFER_OWNERSHIP;
+EOAPI char *struct_foo(Eo *obj, int idx) EFL_TRANSFER_OWNERSHIP 
EINA_WARN_UNUSED_RESULT;
 
 EOAPI Named *struct_bar(Eo *obj);
 
diff --git a/src/tests/eolian/data/typedef_ref.h 
b/src/tests/eolian/data/typedef_ref.h
index 524f803aee..dd3f3ad85e 100644
--- a/src/tests/eolian/data/typedef_ref.h
+++ b/src/tests/eolian/data/typedef_ref.h
@@ -34,6 +34,6 @@ typedef enum
 
 EWAPI const Efl_Class *typedef_class_get(void);
 
-EOAPI char *typedef_foo(Eo *obj, int idx) EFL_TRANSFER_OWNERSHIP;
+EOAPI char *typedef_foo(Eo *obj, int idx) EFL_TRANSFER_OWNERSHIP 
EINA_WARN_UNUSED_RESULT;
 
 #endif

-- 


Reply via email to