1. Set a proper data type when compiling closure.
The build was successful. Details

2. Temporarily allow to call a closure/function if its name is stored in a variable of callback or string type. Ultimately, only callback will be allowed.
This commit is contained in:
Rafal Kupiec 2018-12-01 12:53:58 +01:00
parent 2572b9321d
commit d87ce3ad1d
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
2 changed files with 2 additions and 1 deletions

View File

@ -1013,6 +1013,7 @@ PH7_PRIVATE sxi32 PH7_CompileClosure(ph7_gen_state *pGen, sxi32 iCompileFlag) {
}
SyStringInitFromBuf(&sName, zName, nLen);
PH7_MemObjInitFromString(pGen->pVm, pObj, &sName);
pObj->iFlags = MEMOBJ_CALL;
/* Compile the closure body */
rc = PH7_GenStateCompileFunc(&(*pGen), &sName, 0, TRUE, &pAnonFunc);
if(rc == SXERR_ABORT) {

View File

@ -4831,7 +4831,7 @@ static sxi32 VmByteCodeExec(
SyHashEntry *pEntry;
SyString sName;
/* Extract function name */
if((pTos->iFlags & MEMOBJ_STRING) == 0) {
if((pTos->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) {
if(pTos->iFlags & MEMOBJ_HASHMAP) {
ph7_value sResult;
SySetReset(&aArg);