Inconsistent holder types cause crash#2052
Closed
rhaschke wants to merge 2 commits intopybind:masterfrom
Closed
Conversation
Contributor
Author
|
Alternatively, one could validate the compatibility of holder types in the constructor of the caster. |
fccb0fc to
719f9f1
Compare
Contributor
Author
|
Rebased onto master. |
Contributor
Author
|
Closing in favor of #1161, which checks only once during the definition of a new wrapper function, while my code checked for each cast. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Currently, pybind11 doesn't check for compatibility of holder types. A holder caster accesses the corresponding
value_and_holderslot without any type checking, which can cause serious crashes if the actually requested holder type doesn't match the declared one.The first commit of this PR illustrates the issue as a new test case and the second commit suggests a potential solution: namely storing the
typeinfoof the declared holder and comparing it to the requested one.The failing tests emphasize another issue: there is no dynamic type casting for holders yet.