浏览代码

* take into account far code and far data in tprocvardef.size

git-svn-id: trunk@24823 -
nickysn 12 年之前
父节点
当前提交
c1984bdf56
共有 1 个文件被更改,包括 11 次插入2 次删除
  1. 11 2
      compiler/symdef.pas

+ 11 - 2
compiler/symdef.pas

@@ -5389,13 +5389,22 @@ implementation
 
 
 
 
     function tprocvardef.size : asizeint;
     function tprocvardef.size : asizeint;
+      var
+        far_code_extra_bytes: integer = 0;
+        far_data_extra_bytes: integer = 0;
       begin
       begin
+{$ifdef i8086}
+         if po_far in procoptions then
+           far_code_extra_bytes:=2;
+         if current_settings.x86memorymodel in x86_far_data_models then
+           far_data_extra_bytes:=2;
+{$endif i8086}
          if ((po_methodpointer in procoptions) or
          if ((po_methodpointer in procoptions) or
              is_nested_pd(self)) and
              is_nested_pd(self)) and
             not(po_addressonly in procoptions) then
             not(po_addressonly in procoptions) then
-           size:=2*sizeof(pint)
+           size:=2*sizeof(pint)+far_code_extra_bytes+far_data_extra_bytes
          else
          else
-           size:=sizeof(pint);
+           size:=sizeof(pint)+far_code_extra_bytes;
       end;
       end;