From 876a50460d9f52fe0219cb629417d8c40c548607 Mon Sep 17 00:00:00 2001 From: paladin-t Date: Thu, 14 Jan 2016 19:09:21 +0800 Subject: [PATCH] *fixed a lambda evaluation bug with upvalues from meta class. --- HISTORY | 1 + core/my_basic.c | 15 ++++++--------- output/my_basic.exe | Bin 348672 -> 348672 bytes 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/HISTORY b/HISTORY index 66294a8..758a19c 100755 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,7 @@ Jan. 14 2016 Fixed a collection accessing bug in an assignment statement Fixed a lambda unreferencing issue +Fixed a lambda evaluation bug with upvalues from meta class Fixed a routine disposing issue Fixed a missing assignment bug with class field accessor Fixed an issue with lambda when a class instance went out of use diff --git a/core/my_basic.c b/core/my_basic.c index d18f2ca..a85e347 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -3362,7 +3362,7 @@ int _eval_script_routine(mb_interpreter_t* s, _ls_node_t** l, mb_value_t* va, un } } while(ast); - _out_of_scope(s, running, 0, true); + _out_of_scope(s, running, r->instance, true); result = _proc_args(s, l, running, 0, 0, r, 0, 0, false); if(result != MB_FUNC_OK) @@ -6430,6 +6430,10 @@ int _fill_with_upvalue(void* data, void* extra, void* p) { obj = (_object_t*)nori->data; _clone_object(tuple->s, obj, var->data); _REF(var->data) + if(_IS_ROUTINE(obj) && obj->data.routine->type != _IT_LAMBDA) { + ovar->ref = true; + var->data->ref = true; + } #ifdef MB_ENABLE_CLASS var->pathing = 0; #endif /* MB_ENABLE_CLASS */ @@ -7078,14 +7082,7 @@ int _clone_object(mb_interpreter_t* s, _object_t* obj, _object_t* tgt) { break; #endif /* MB_ENABLE_CLASS */ case _DT_ROUTINE: -#ifdef MB_ENABLE_LAMBDA - if(obj->data.routine->type == _IT_LAMBDA) { - tgt->data.routine = obj->data.routine; - - break; - } -#endif /* MB_ENABLE_LAMBDA */ - mb_assert(0 && "Not implemented."); + tgt->data.routine = obj->data.routine; break; case _DT_NIL: /* Fall through */ diff --git a/output/my_basic.exe b/output/my_basic.exe index 239847ea5f9e6b4903e866c9f8031050d2922e75..11bc217a06f605764c583c719b254b7e2b09856b 100755 GIT binary patch delta 13952 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 delta 13934 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