Block loading of incompatible IBinTools interface #979
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.
In #705 SourceMod received support for x64 binaries. The
IBinTools
interface was updated to call functions in 64bit binaries. ThePassInfo
struct's size was increased and theCreate[V]Call()
functions signatures changed, thus making the interface incompatible for consumers which were compiled against an earlier version.IBinTools::IsVersionCompatible
wasn't adjusted to that fact, so extensions compiled against pre SM 1.10 could request anIBinTools
interface pointer, but crash when they try to use it.This change makes requests to older interface versions invalid, thus letting
RequestInterface
returnNULL
for older extensions. It doesn't fix the backwards incompatibility, but at least makes the problem more blatant, so extensions can handle it themselves.