소스 검색

* GetModuleByAddr: Prevent returning a name of the current executable for invalid addresses such as pointer(-1) on Windows.

git-svn-id: trunk@43364 -
yury 5 년 전
부모
커밋
4ade471488
1개의 변경된 파일6개의 추가작업 그리고 3개의 파일을 삭제
  1. 6 3
      rtl/inc/exeinfo.pp

+ 6 - 3
rtl/inc/exeinfo.pp

@@ -98,12 +98,15 @@ uses
         begin
           baseaddr:=Tmm.AllocationBase;
           TST[0]:= #0;
-          GetModuleFileName(THandle(Tmm.AllocationBase), TST, Length(TST));
+          if baseaddr <> nil then
+            begin
+              GetModuleFileName(THandle(Tmm.AllocationBase), TST, Length(TST));
 {$ifdef FPC_OS_UNICODE}
-          filename:= String(PWideChar(@TST));
+              filename:= String(PWideChar(@TST));
 {$else}
-          filename:= String(PChar(@TST));
+              filename:= String(PChar(@TST));
 {$endif FPC_OS_UNICODE}
+            end;
         end;
     end;