瀏覽代碼

* i8086 far data memory model fixes in tobjectdef.vmtmethodoffset

git-svn-id: trunk@27539 -
nickysn 11 年之前
父節點
當前提交
902d118ec8
共有 1 個文件被更改,包括 4 次插入3 次删除
  1. 4 3
      compiler/symdef.pas

+ 4 - 3
compiler/symdef.pas

@@ -6283,7 +6283,7 @@ implementation
         case objecttype of
         odt_class:
           { the +2*sizeof(pint) is size and -size }
-          vmtmethodoffset:=index*voidcodepointertype.size+10*sizeof(pint)+2*sizeof(pint);
+          vmtmethodoffset:=index*voidcodepointertype.size+10*voidpointertype.size+2*sizeof(pint);
         odt_helper,
         odt_objcclass,
         odt_objcprotocol:
@@ -6295,10 +6295,11 @@ implementation
           { invalid }
           vmtmethodoffset:=-1;
         else
+          { the +2*sizeof(pint) is size and -size }
 {$ifdef WITHDMT}
-          vmtmethodoffset:=index*voidcodepointertype.size+4*sizeof(pint);
+          vmtmethodoffset:=index*voidcodepointertype.size+2*voidpointertype.size+2*sizeof(pint);
 {$else WITHDMT}
-          vmtmethodoffset:=index*voidcodepointertype.size+3*sizeof(pint);
+          vmtmethodoffset:=index*voidcodepointertype.size+1*voidpointertype.size+2*sizeof(pint);
 {$endif WITHDMT}
         end;
       end;