Forum > CustomDrawn
[SOLVED] VerifyAndCleanUpFontDirectories doesn't check all list entries
(1/1)
lagprogramming:
lcl/interfaces/customdrawn/customdrawnproc.pas has
--- Code: Pascal [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure VerifyAndCleanUpFontDirectories(AFontDirectories: TStringList);var i, j: Integer;begin // Add path delimitiers to the end of all paths for i := 0 to AFontDirectories.Count -1 do begin AFontDirectories.Strings[i] := IncludeTrailingPathDelimiter(AFontDirectories.Strings[i]); end; // remove all duplicates i := 0; while i < AFontDirectories.Count do begin j := i+1; while j < AFontDirectories.Count do begin if AFontDirectories.Strings[i] = AFontDirectories.Strings[j] then AFontDirectories.Delete(j); Inc(j); end; Inc(i); end; // Now remove all directories which don't exist i := 0; while i < AFontDirectories.Count do begin if not DirectoryExistsUTF8(AFontDirectories.Strings[i]) then AFontDirectories.Delete(i); Inc(i); end; // Raise an exception if there are no font directories if AFontDirectories.Count = 0 then raise Exception.Create('[VerifyAndCleanUpFontDirectories] After cleaning up no font directories were found.');end;The original code doesn't remove all nonexistent or duplicate directories because immediately after a delete the list index is increased, thus skipping a list entry. The following patch keeps the index unchanged if the list deletes an entry. Now each and every tstringlist entry is verified.
AlexTP:
Posted: https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/40694
Navigation
[0] Message Index