Browse Source

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

git-svn-id: trunk@24823 -
nickysn 12 years ago
parent
commit
c1984bdf56
1 changed files with 11 additions and 2 deletions
  1. 11 2
      compiler/symdef.pas

+ 11 - 2
compiler/symdef.pas

@@ -5389,13 +5389,22 @@ implementation
 
 
     function tprocvardef.size : asizeint;
+      var
+        far_code_extra_bytes: integer = 0;
+        far_data_extra_bytes: integer = 0;
       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
              is_nested_pd(self)) and
             not(po_addressonly in procoptions) then
-           size:=2*sizeof(pint)
+           size:=2*sizeof(pint)+far_code_extra_bytes+far_data_extra_bytes
          else
-           size:=sizeof(pint);
+           size:=sizeof(pint)+far_code_extra_bytes;
       end;