Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
So previously this fix was done in the plugin constructor, which takes a path and loads it as a plugin. The Windows version of the code uses
LoadLibraryA
, which auto-appends an extension when the file doesn't exist, while the Linux version usesdlopen
, which doesn't. Therefore if you pass in a path that doesn't exist the Windows version still works, so we changed the Linux version to do the same, the theory being that obviously the constructor can already accept a path that doesn't exist.Turns out, that wasn't the issue, at least not the only one. The Windows version of
utils::Canonicalise
compacts string segments purely lexicographically; that is, doesn't care if they're valid. However, the Linux version actually checks the file exists and resolves symlinks. Thus the constructor can be called with an invalid path on Windows, but not on Linux, so our.so
appending code was never reached on the OS is mattered on. The solution is simple - move that.so
appending to beforeutils::Canonicalise
is called.