|
|
@ -265,7 +265,7 @@ PH7_PRIVATE sxi32 PH7_ClassInherit(ph7_vm *pVm, ph7_class *pSub, ph7_class *pBas |
|
|
|
} |
|
|
|
SyHashResetLoopCursor(&pBase->hMethod); |
|
|
|
while((pEntry = SyHashGetNextEntry(&pBase->hMethod)) != 0) { |
|
|
|
/* Make sure the private/final methods are not redeclared in the subclass */ |
|
|
|
/* Make sure the final methods are not redeclared in the subclass */ |
|
|
|
pMeth = (ph7_class_method *)pEntry->pUserData; |
|
|
|
pName = &pMeth->sFunc.sName; |
|
|
|
if((pEntry = SyHashGet(&pSub->hMethod, (const void *)pName->zString, pName->nByte)) != 0) { |
|
|
@ -281,11 +281,9 @@ PH7_PRIVATE sxi32 PH7_ClassInherit(ph7_vm *pVm, ph7_class *pSub, ph7_class *pBas |
|
|
|
} |
|
|
|
} |
|
|
|
/* Install the method */ |
|
|
|
if(pMeth->iProtection != PH7_CLASS_PROT_PRIVATE) { |
|
|
|
rc = SyHashInsert(&pSub->hMethod, (const void *)pName->zString, pName->nByte, pMeth); |
|
|
|
if(rc != SXRET_OK) { |
|
|
|
return rc; |
|
|
|
} |
|
|
|
rc = SyHashInsert(&pSub->hMethod, (const void *)pName->zString, pName->nByte, pMeth); |
|
|
|
if(rc != SXRET_OK) { |
|
|
|
return rc; |
|
|
|
} |
|
|
|
} |
|
|
|
/* Mark first inherited class as direct subclass */ |
|
|
|