1
0
mirror of synced 2024-12-22 17:23:07 +01:00

Memory issue when using SHGetSpecialFolderLocation (deprecated)

This commit is contained in:
Jan Middelburg 2021-12-03 13:23:05 +01:00 committed by GitHub
parent b779a0e6af
commit c0ca278638
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -418,16 +418,13 @@ procedure TX2App.GetPath();
(APath); (APath);
end; end;
var {$IFNDEF DXE2PLUS}
procedure GetPaths;
var
ifMalloc: IMalloc; ifMalloc: IMalloc;
pIDL: PItemIDList; pIDL: PItemIDList;
cPath: array[0..MAX_PATH] of Char; cPath: array[0..MAX_PATH] of Char;
begin
begin
FFileName := GetModule(SysInit.HInstance);
FPath := FixPath(ExtractFilePath(FFileName));
FMainPath := FixPath(ExtractFilePath(GetModule(0)));
SHGetMalloc(ifMalloc); SHGetMalloc(ifMalloc);
try try
FillChar(cPath, SizeOf(cPath), #0); FillChar(cPath, SizeOf(cPath), #0);
@ -436,7 +433,7 @@ begin
FUserPath := FixPath(cPath); FUserPath := FixPath(cPath);
cPath := '';
FillChar(cPath, SizeOf(cPath), #0); FillChar(cPath, SizeOf(cPath), #0);
SHGetSpecialFolderLocation(0, CSIDL_COMMON_APPDATA, pIDL); SHGetSpecialFolderLocation(0, CSIDL_COMMON_APPDATA, pIDL);
SHGetPathFromIDList(pIDL, @cPath); SHGetPathFromIDList(pIDL, @cPath);
@ -445,6 +442,19 @@ begin
finally finally
ifMalloc := nil; ifMalloc := nil;
end; end;
end;
{$ENDIF}
begin
FFileName := GetModule(SysInit.HInstance);
FPath := FixPath(ExtractFilePath(FFileName));
FMainPath := FixPath(ExtractFilePath(GetModule(0)));
{$IFDEF DXE2PLUS}
FUserPath := FixPath(System.IOUtils.TPath.GetHomePath);
FProgramDataPath := FixPath(System.IOUtils.TPath.GetPublicPath);
{$ELSE}
GetPaths;
{$ENDIF}
end; end;