diff --git a/engine/vm.c b/engine/vm.c index faa53ef..f133c36 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -4843,8 +4843,11 @@ static sxi32 VmByteCodeExec( ph7_value *pArg = &pTos[-pInstr->iP1]; SyHashEntry *pEntry; SyString sName; + VmInstr *bInstr = &aInstr[pc - 1]; /* Extract function name */ - if((pTos->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { + if(pTos->iFlags & MEMOBJ_STRING && bInstr->iOp == PH7_OP_LOAD) { + PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Calling a non-callable object"); + } else if((pTos->iFlags & (MEMOBJ_CALL | MEMOBJ_STRING)) == 0) { if(pTos->iFlags & MEMOBJ_HASHMAP) { ph7_value sResult; SySetReset(&aArg);