1. Set a proper data type when compiling closure.
Todas as verificações foram bem sucedidas
The build was successful.
Todas as verificações foram bem sucedidas
The build was successful.
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.
Esse commit está contido em:
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário