q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=f0bf599435fead1985254a3f8ca18d0748b03e6e
commit f0bf599435fead1985254a3f8ca18d0748b03e6e Author: Daniel Kolesa <d.kol...@samsung.com> Date: Wed Feb 25 12:09:16 2015 +0000 elua: slightly less broken mixin behavior --- src/bindings/luajit/eo.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bindings/luajit/eo.lua b/src/bindings/luajit/eo.lua index 4169b08..797aaf9 100644 --- a/src/bindings/luajit/eo.lua +++ b/src/bindings/luajit/eo.lua @@ -200,13 +200,13 @@ end local mixin_tbl = function(cl, mixin, field) local mxt = mixin[field] if mxt then - local clt = cl[field] + local clt = rawget(cl, field) if not clt then - cl[field] = mxt - else - for k, v in pairs(mxt) do clt[k] = v end + -- will always succeed, even if it means deep lookups + clt = cl.__proto[field]:clone() + rawset(cl, field, clt) end - mixin[field] = nil + for k, v in pairs(mxt) do clt[k] = v end end end --