From a3a2c8b619b1a190246e9a28d4cb63fe217e329c Mon Sep 17 00:00:00 2001 From: belliash Date: Thu, 30 May 2019 12:43:54 +0200 Subject: [PATCH] Allow non-static methods inside static (final virtual) classes to be called statically. --- engine/vm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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)) {