From 64740049bf0a3dae871c30e07052db9180cf1733 Mon Sep 17 00:00:00 2001 From: Jonas Maebe Date: Mon, 17 Sep 2012 14:34:03 +0000 Subject: [PATCH] * 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 - --- compiler/ptype.pas | 5 +++-- tests/webtbs/tw22796.pp | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/ptype.pas b/compiler/ptype.pas index 4f0eedf784..1fd72d4909 100644 --- a/compiler/ptype.pas +++ b/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 diff --git a/tests/webtbs/tw22796.pp b/tests/webtbs/tw22796.pp index b35150d87a..b55b7b7682 100644 --- a/tests/webtbs/tw22796.pp +++ b/tests/webtbs/tw22796.pp @@ -1,3 +1,5 @@ +{ %norun } + program CompileError; {$mode delphi}{$H+}