소스 검색

* Change Field passing type of FreeLocalVerbosity parameter
to by value to avoid passing an unaligned pointer.
* Adapt code calling FreeLocalVerbosity to reset
currrent_settings.pmessage to nil afterwards.

git-svn-id: trunk@18978 -

pierre 14 년 전
부모
커밋
713f269ce2
2개의 변경된 파일4개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 0
      compiler/parser.pas
  2. 3 3
      compiler/verbose.pas

+ 1 - 0
compiler/parser.pas

@@ -522,6 +522,7 @@ implementation
            set_current_module(olddata^.old_current_module);
 
            FreeLocalVerbosity(current_settings.pmessage);
+           current_settings.pmessage:=nil;
 
            dispose(olddata);
          end;

+ 3 - 3
compiler/verbose.pas

@@ -82,7 +82,7 @@ interface
     function  CheckVerbosity(v:longint):boolean;
     function  SetMessageVerbosity(v:longint;state:tmsgstate):boolean;
     procedure RestoreLocalVerbosity(pstate : pmessagestaterecord);
-    procedure FreeLocalVerbosity(var fstate : pmessagestaterecord);
+    procedure FreeLocalVerbosity(fstate : pmessagestaterecord);
 
     function ChangeMessageVerbosity(s: string; var i: integer;state:tmsgstate): boolean;
     procedure ShowStatus;
@@ -191,7 +191,7 @@ implementation
           end;
       end;
 
-    procedure FreeLocalVerbosity(var fstate : pmessagestaterecord);
+    procedure FreeLocalVerbosity(fstate : pmessagestaterecord);
     var pstate : pmessagestaterecord;
       begin
         pstate:=fstate;
@@ -199,7 +199,7 @@ implementation
           begin
             fstate:=pstate^.next;
             freemem(pstate);
-            pstate:=fstate;
+            pstate:=unaligned(fstate);
           end;
       end;