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
 

-- 


Reply via email to