diff --git a/engine/vm.c b/engine/vm.c index d51674b..0d99153 100644 --- a/engine/vm.c +++ b/engine/vm.c @@ -4333,7 +4333,7 @@ static sxi32 VmByteCodeExec( VmPopOperand(&pTos, 1); } PH7_MemObjRelease(pTos); - } else if((pMeth->iFlags & PH7_CLASS_ATTR_STATIC) == 0) { + } else if((pMeth->iFlags & PH7_CLASS_ATTR_STATIC) == 0 && ((pClass->iFlags & PH7_CLASS_FINAL) == 0 || (pClass->iFlags & PH7_CLASS_VIRTUAL) == 0)) { PH7_VmThrowError(&(*pVm), PH7_CTX_ERR, "Attempt to call statically a non-static method '%z::%z()'", &pClass->sName, &sName); } else if(!VmClassMemberAccess(&(*pVm), pClass, pMeth->iProtection)) {