Browse Source

* fixed bug for overloaded operators with a return type that has a size
which isn't a multiple of the target_os.stackalignment (main branch
patch from Peter)

Jonas Maebe 24 years ago
parent
commit
40ca771131
1 changed files with 11 additions and 5 deletions
  1. 11 5
      compiler/pdecsub.pas

+ 11 - 5
compiler/pdecsub.pas

@@ -1836,7 +1836,8 @@ const
                 tprocdef(aktprocsym.definition).parast.insert(otsym);
               { this increases the data size }
               { correct this to get the right ret $value }
-                dec(tprocdef(aktprocsym.definition).parast.datasize,otsym.getpushsize);
+                dec(tprocdef(aktprocsym.definition).parast.datasize,
+                    align(otsym.getpushsize,tprocdef(aktprocsym.definition).parast.dataalignment));
                 { this allows to read the funcretoffset }
                 otsym.address:=-4;
                 otsym.varspez:=vs_var;
@@ -1850,10 +1851,15 @@ const
 end.
 {
   $Log$
-  Revision 1.22  2001-05-04 15:52:03  florian
-    * some Delphi incompatibilities fixed:
-       - out, dispose and new can be used as idenfiers now
-       - const p = apointerype(nil); is supported now
+  Revision 1.23  2001-05-08 14:32:58  jonas
+    * fixed bug for overloaded operators with a return type that has a size
+      which isn't a multiple of the target_os.stackalignment (main branch
+      patch from Peter)
+
+  Revision 1.22  2001/05/04 15:52:03  florian
+    * some Delphi incompatibilities fixed:
+       - out, dispose and new can be used as idenfiers now
+       - const p = apointerype(nil); is supported now
     + support for const p = apointertype(pointer(1234)); added
 
   Revision 1.21  2001/04/18 22:01:57  peter