From a9aed90fde2405d40cb51cc6ac25fd52714d82bb Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Thu, 14 Sep 2017 00:34:06 +0200 Subject: [PATCH] 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];