소스 검색

* fix for mantis #22796: add alignment padding to records before inserting
hidden parameters while parsing the interface, because they may depend on
the padded size (since the size was not yet padded in the interface and
padded in the implementation, this could result in differences)

git-svn-id: trunk@22414 -

Jonas Maebe 13 년 전
부모
커밋
64740049bf
2개의 변경된 파일5개의 추가작업 그리고 2개의 파일을 삭제
  1. 3 2
      compiler/ptype.pas
  2. 2 0
      tests/webtbs/tw22796.pp

+ 3 - 2
compiler/ptype.pas

@@ -822,12 +822,13 @@ implementation
                add_typedconst_init_routine(current_structdef);
              consume(_END);
             end;
+         { make the record size aligned (has to be done before inserting the
+           parameters, because that may depend on the record's size) }
+         recst.addalignmentpadding;
          { don't keep track of procdefs in a separate list, because the
            compiler may add additional procdefs (e.g. property wrappers for
            the jvm backend) }
          insert_record_hidden_paras(trecorddef(current_structdef));
-         { make the record size aligned }
-         recst.addalignmentpadding;
          { restore symtable stack }
          symtablestack.pop(recst);
          if trecorddef(current_structdef).is_packed and is_managed_type(current_structdef) then

+ 2 - 0
tests/webtbs/tw22796.pp

@@ -1,3 +1,5 @@
+{ %norun }
+
 program CompileError;
 
 {$mode delphi}{$H+}