Browse Source

* set packenum and setalloc to defined values when changing mode, resolves #40056

florian 1 year ago
parent
commit
5086cf7e72
2 changed files with 20 additions and 3 deletions
  1. 10 3
      compiler/scanner.pas
  2. 10 0
      tests/webtbs/tw40056.pp

+ 10 - 3
compiler/scanner.pas

@@ -628,10 +628,17 @@ implementation
                current_settings.setalloc:=1;
              end
            else if (m_mac in current_settings.modeswitches) then
-             { compatible with Metrowerks Pascal }
-             current_settings.packenum:=2
+             begin
+               { compatible with Metrowerks Pascal }
+               current_settings.packenum:=2;
+               current_settings.setalloc:=default_settings.setalloc;
+             end
            else
-             current_settings.packenum:=4;
+             begin
+               current_settings.packenum:=default_settings.packenum;
+               current_settings.setalloc:=default_settings.setalloc;
+             end;
+
            if changeinit then
              begin
                init_settings.packenum:=current_settings.packenum;

+ 10 - 0
tests/webtbs/tw40056.pp

@@ -0,0 +1,10 @@
+{ %opt=-MDelphi }
+program SetTest;
+{$mode objfpc}
+type
+  TEnum = (one, two);
+  TSet = set of TEnum;
+begin
+  if SizeOf(TSet)<>4 then
+    halt(1);
+end.