FIX: Crash with absolute symbolic links (GVFS)

(cherry picked from commit 7d7a729773)
This commit is contained in:
Alexander Koblov 2025-02-15 13:14:41 +03:00
commit c8be36cef6

View file

@ -145,22 +145,27 @@ begin
Result.LinkProperty.IsValid := Assigned(ATarget);
if Assigned(ATarget) then
begin
AFile:= g_file_get_child(AFolder, ATarget);
ASymlinkInfo := g_file_query_info (AFile, FILE_ATTRIBUTE_STANDARD_TYPE,
G_FILE_QUERY_INFO_NONE, nil, nil);
Result.LinkProperty.LinkTo := ATarget;
Result.LinkProperty.IsValid := Assigned(ASymlinkInfo);
if (Result.LinkProperty.IsValid) then
AFile:= g_file_get_child(AFolder, ATarget);
Result.LinkProperty.IsValid:= Assigned(AFile);
if Result.LinkProperty.IsValid then
begin
AFileType:= g_file_info_get_file_type(ASymlinkInfo);
Result.LinkProperty.IsLinkToDirectory := (AFileType = G_FILE_TYPE_DIRECTORY);
if Result.LinkProperty.IsLinkToDirectory then Result.Size := 0;
g_object_unref(ASymlinkInfo);
ASymlinkInfo := g_file_query_info (AFile, FILE_ATTRIBUTE_STANDARD_TYPE,
G_FILE_QUERY_INFO_NONE, nil, nil);
Result.LinkProperty.IsValid := Assigned(ASymlinkInfo);
if (Result.LinkProperty.IsValid) then
begin
AFileType:= g_file_info_get_file_type(ASymlinkInfo);
Result.LinkProperty.IsLinkToDirectory := (AFileType = G_FILE_TYPE_DIRECTORY);
if Result.LinkProperty.IsLinkToDirectory then Result.Size := 0;
g_object_unref(ASymlinkInfo);
end;
g_object_unref(PGObject(AFile));
end;
g_object_unref(PGObject(AFile));
end;
end
else if AFileType in [G_FILE_TYPE_SHORTCUT, G_FILE_TYPE_MOUNTABLE] then