summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2013-08-14 13:48:54 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2013-08-14 13:48:54 +0200
commit807d41dd6bbf1b50f2f630b4c60c2306d240138c (patch)
treeb31805050574cfe314d1b3449210c7ab7e3a25f8
parent207963514e65a37bea0429c49e2ae835ff0e6094 (diff)
downloadefl-807d41dd6bbf1b50f2f630b4c60c2306d240138c.tar.gz
_eo2_api_desc_get: walks in mro not in klass->parent
-rw-r--r--src/lib/eo/eo.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c
index 3d8fc8aa73..5173bbd270 100644
--- a/src/lib/eo/eo.c
+++ b/src/lib/eo/eo.c
@@ -485,14 +485,18 @@ static inline const Eo2_Op_Description *
_eo2_api_desc_get(const void *api_func, const _Eo_Class *klass)
{
int imin, imax, imid;
+ const _Eo_Class *cur_klass;
+ const _Eo_Class **kls_itr = NULL;
Eo2_Op_Description *op_desc;
Eo2_Op_Description *op_descs;
- while (klass)
+ kls_itr = klass->mro;
+ while (*kls_itr)
{
+ cur_klass = *kls_itr;
imin = 0;
- imax = klass->desc->ops.count - 1;
- op_descs = klass->desc->ops.descs2;
+ imax = cur_klass->desc->ops.count - 1;
+ op_descs = cur_klass->desc->ops.descs2;
while (imax >= imin)
{
@@ -507,7 +511,7 @@ _eo2_api_desc_get(const void *api_func, const _Eo_Class *klass)
return op_desc;
}
- klass = klass->parent;
+ kls_itr++;
}
return NULL;