From: Jerome St-Louis Date: Tue, 16 Jun 2015 06:55:15 +0000 (-0400) Subject: ecere/com/instance: Fixed crashes on intermediate classes declared later X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?p=sdk;a=commitdiff_plain;h=66e03328b855d53a8994a489688cd66e2e3dcf42 ecere/com/instance: Fixed crashes on intermediate classes declared later - Part of virtual methods tables were left uninitializeds --- diff --git a/ecere/src/com/instance.ec b/ecere/src/com/instance.ec index 86124f1..7494ffa 100644 --- a/ecere/src/com/instance.ec +++ b/ecere/src/com/instance.ec @@ -2145,6 +2145,7 @@ static void FixDerivativesBase(Class base, Class mod) _class._vTbl = renew _class._vTbl void *[_class.vTblSize]; // memmove(_class._vTbl + mod.base.vTblSize, _class._vTbl + baseClass.vTblSize, (mod.base.vTblSize - baseClass.vTblSize) * sizeof(void *)); memmove(_class._vTbl + mod.base.vTblSize, _class._vTbl + baseClass.vTblSize, (_class.vTblSize - mod.vTblSize) * sizeof(void *)); + memcpy(_class._vTbl + baseClass.vTblSize, mod._vTbl + baseClass.vTblSize, (mod.base.vTblSize - baseClass.vTblSize) * sizeof(void *)); updateStart = baseClass.vTblSize; updateEnd = updateStart + mod.base.vTblSize - baseClass.vTblSize;