Mercurial Hosting > luan
comparison core/src/luan/impl/SetTableEntry.java @ 572:f1601a4ce1aa
fix stack when calling meta-methods
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 12 Jul 2015 21:34:23 -0600 |
parents | e3fb9768dbb3 |
children | 7c3ad6db8ac3 |
comparison
equal
deleted
inserted
replaced
571:cd944b010f25 | 572:f1601a4ce1aa |
---|---|
23 @Override public void set(LuanStateImpl luan,Object value) throws LuanException { | 23 @Override public void set(LuanStateImpl luan,Object value) throws LuanException { |
24 newIndex( luan, tableExpr.eval(luan), keyExpr.eval(luan), value ); | 24 newIndex( luan, tableExpr.eval(luan), keyExpr.eval(luan), value ); |
25 } | 25 } |
26 | 26 |
27 private void newIndex(LuanStateImpl luan,Object t,Object key,Object value) throws LuanException { | 27 private void newIndex(LuanStateImpl luan,Object t,Object key,Object value) throws LuanException { |
28 LuanBit bit = luan.bit(el()); | |
28 if( t instanceof LuanTable ) { | 29 if( t instanceof LuanTable ) { |
29 LuanTable tbl = (LuanTable)t; | 30 LuanTable tbl = (LuanTable)t; |
30 tbl.put(luan,key,value); | 31 tbl.put(bit,key,value); |
31 return; | 32 return; |
32 } | 33 } |
33 LuanBit bit = luan.bit(el()); | |
34 if( t != null && luan.hasJava() ) | 34 if( t != null && luan.hasJava() ) |
35 JavaLuan.__new_index(bit,t,key,value); | 35 JavaLuan.__new_index(bit,t,key,value); |
36 else | 36 else |
37 throw bit.exception( "attempt to index a " + Luan.type(t) + " value in '"+bit.el.text()+"'" ); | 37 throw bit.exception( "attempt to index a " + Luan.type(t) + " value in '"+bit.el.text()+"'" ); |
38 } | 38 } |