Inconsistent holder types cause crash #2052
Closed
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_holder
slot 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
typeinfo
of 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.