summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2016-12-14 17:31:24 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2016-12-14 18:23:16 +0100
commitd123978718ee61c1ba9fce56597f253f01cf4234 (patch)
tree6b08e484b66eefd9940b401861532dcd320a2335
parentc813e94606929449b93c780af0f9764e333b8218 (diff)
downloadefl-d123978718ee61c1ba9fce56597f253f01cf4234.tar.gz
eolian: handle pointers in aliased_base_get
-rw-r--r--src/lib/eolian/Eolian.h3
-rw-r--r--src/lib/eolian/database_type_api.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 0c853dd08d..4275e90377 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -1776,7 +1776,8 @@ EAPI const Eolian_Typedecl *eolian_type_typedecl_get(const Eolian_Type *tp);
* using eolian_type_typedecl_get and if the retrieved base is an alias, returns
* a call of eolian_typedecl_aliased_base_get function on it. Otherwise it
* returns the given type. This is useful in order to retrieve what an aliased
- * type actually is while still having convenience.
+ * type actually is while still having convenience. Keep in mind that this stops
+ * if the found type is actually a pointer (has a ptr() on it).
*
* @param[in] tp the type.
* @return the lowest alias base or the given type.
diff --git a/src/lib/eolian/database_type_api.c b/src/lib/eolian/database_type_api.c
index 6584ae7957..b78d61907c 100644
--- a/src/lib/eolian/database_type_api.c
+++ b/src/lib/eolian/database_type_api.c
@@ -288,7 +288,7 @@ eolian_typedecl_base_type_get(const Eolian_Typedecl *tp)
EAPI const Eolian_Type *
eolian_type_aliased_base_get(const Eolian_Type *tp)
{
- if (!tp || tp->type != EOLIAN_TYPE_REGULAR)
+ if (!tp || tp->type != EOLIAN_TYPE_REGULAR || tp->is_ptr)
return tp;
const Eolian_Typedecl *btp = eolian_type_typedecl_get(tp);
if (btp && (btp->type == EOLIAN_TYPEDECL_ALIAS))