q66 pushed a commit to branch master.

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

commit a9aed90fde2405d40cb51cc6ac25fd52714d82bb
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Thu Sep 14 00:34:06 2017 +0200

    eolian: more relaxed rules on what is actually ownable
    
    For example, aliases to ownable types are now also ownable,
    which wasn't possible in the previous version, where you could
    only own actual expanded ownable types.
---
 src/lib/eolian/database_type.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index df7cbae83b..a05fa25fa5 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -92,7 +92,16 @@ database_type_is_ownable(const Eolian_Type *tp, Eina_Bool 
term)
           return EINA_TRUE;
         const char *ct = eo_lexer_get_c_type(kwid);
         if (!ct)
-          return EINA_FALSE;
+          {
+             const Eolian_Typedecl *tpp = eolian_type_typedecl_get(tp);
+             if (!tpp)
+               return EINA_FALSE;
+             if (tpp->type == EOLIAN_TYPEDECL_FUNCTION_POINTER)
+               return EINA_TRUE;
+             if (tpp->type == EOLIAN_TYPEDECL_ALIAS)
+               return database_type_is_ownable(tpp->base_type, term);
+             return EINA_FALSE;
+          }
         return (ct[strlen(ct) - 1] == '*');
      }
    return _ownable_types[tp->type];

-- 


Reply via email to