libloadorder
libloadorder copied to clipboard
Plugin filename comparisons do not handle path case insensitivity as Windows does
Plugin filenames are compared case-insensitively using the unicase crate. However, unicase does not implement the same case folding behaviour as Windows (not surprising, the latter's rules are a mystery).
In practice, the only variation that I've come across is that Greek 'Ρ', 'ρ' and 'ϱ' are all considered equal by unicase, but Windows only considers the first two to be equal. Unicase does give the same results for Turkish İ, ı, I and i.
There are also several places where filenames are stored in hashsets and compared case-insensitively by lowercasing them before storage, which is not necessarily the same as case folding them.