pybind11/tests
Jason Rhinelander 14e70650fe Fix downcasting of base class pointers
When we are returned a base class pointer (either directly or via
shared_from_this()) we detect its runtime type (using `typeid`), then
end up essentially reinterpret_casting the pointer to the derived type.
This is invalid when the base class pointer was a non-first base, and we
end up with an invalid pointer.  We could dynamic_cast to the
most-derived type, but if *that* type isn't pybind11-registered, the
resulting pointer given to the base `cast` implementation isn't necessarily valid
to be reinterpret_cast'ed back to the backup type.

This commit removes the "backup" type argument from the many-argument
`cast(...)` and instead does the derived-or-pointer type decision and
type lookup in type_caster_base, where the dynamic_cast has to be to
correctly get the derived pointer, but also has to do the type lookup to
ensure that we don't pass the wrong (derived) pointer when the backup
type (i.e. the type caster intrinsic type) pointer is needed.

Since the lookup is needed before calling the base cast(), this also
changes the input type to a detail::type_info rather than doing a
(second) lookup in cast().
2017-04-27 09:12:41 -04:00
..
test_cmake_build Test with debug build of Python when DEBUG=1 on Travis 2017-02-28 00:27:26 +01:00
CMakeLists.txt Fix test_cmake_build failure with bare python exe name (fix #783) 2017-04-06 22:41:32 +02:00
conftest.py Minor pytest maintenance (#702) 2017-03-10 15:42:42 +01:00
constructor_stats.h Minor fixes (#613) 2017-01-31 17:28:29 +01:00
object.h Improve custom holder support (#607) 2017-01-31 17:05:44 +01:00
pybind11_tests.cpp Fix downcasting of base class pointers 2017-04-27 09:12:41 -04:00
pybind11_tests.h Replace std::cout with py::print in tests 2016-09-07 01:25:27 +02:00
pytest.ini Minor pytest maintenance (#702) 2017-03-10 15:42:42 +01:00
test_alias_initialization.cpp Implement py::init_alias<>() constructors 2016-09-09 03:04:09 -04:00
test_alias_initialization.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_buffers.cpp WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_buffers.py Minor pytest maintenance (#702) 2017-03-10 15:42:42 +01:00
test_call_policies.cpp Add a scope guard call policy 2017-04-03 00:52:47 +02:00
test_call_policies.py Add a scope guard call policy 2017-04-03 00:52:47 +02:00
test_callbacks.cpp fix -Wunused-lambda-capture warning 2017-02-26 23:15:39 +01:00
test_callbacks.py Fixed compilation error when binding function accepting some forms of std::function (#689) 2017-02-22 20:00:59 +01:00
test_chrono.cpp Fix for floating point durations 2017-03-11 23:04:16 -04:00
test_chrono.py Fix for floating point durations 2017-03-11 23:04:16 -04:00
test_class_args.cpp Support std::shared_ptr holder type out of the box 2016-10-20 16:19:58 +02:00
test_class_args.py Set maximum line length for Python style checker (#552) 2016-12-13 00:59:28 +01:00
test_constants_and_functions.cpp Support binding noexcept function/methods in C++17 2016-12-14 20:40:49 +01:00
test_constants_and_functions.py Support binding noexcept function/methods in C++17 2016-12-14 20:40:49 +01:00
test_copy_move_policies.cpp equals needed for test_copy_move_policies to build icpc 2016.3 (#507) 2016-11-17 11:01:11 +01:00
test_copy_move_policies.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_docstring_options.cpp Fix extra docstring newlines under options.disable_function_signatures() 2017-03-08 12:32:42 -05:00
test_docstring_options.py Fix extra docstring newlines under options.disable_function_signatures() 2017-03-08 12:32:42 -05:00
test_eigen.cpp Fix Eigen argument doc strings 2017-04-08 23:25:13 -04:00
test_eigen.py Fix Eigen argument doc strings 2017-04-08 23:25:13 -04:00
test_enum.cpp make arithmetic operators of enum_ optional (#508) 2016-11-17 23:24:47 +01:00
test_enum.py Expose enum_ entries as "__members__" read-only property. Getters get a copy. 2017-03-03 08:45:50 -08:00
test_eval_call.py Add checks to maintain a consistent Python code style and prevent bugs (#515) 2016-11-20 21:21:54 +01:00
test_eval.cpp Support raw string literals as input for py::eval (#766) 2017-03-29 00:27:56 +02:00
test_eval.py Rewrite eval tests to allow for simple asserts 2016-08-19 16:31:48 +02:00
test_exceptions.cpp Add a method to check Python exception types (#772) 2017-04-02 22:38:50 +02:00
test_exceptions.py Add a method to check Python exception types (#772) 2017-04-02 22:38:50 +02:00
test_inheritance.cpp Make all classes with the same instance size derive from a common base 2017-02-23 15:45:26 +01:00
test_inheritance.py Make all classes with the same instance size derive from a common base 2017-02-23 15:45:26 +01:00
test_issues.cpp Fix debugging output for nameless py::arg_v annotations (#648) 2017-02-08 08:45:51 +01:00
test_issues.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_kwargs_and_defaults.cpp Add support for positional args with args/kwargs 2017-01-31 17:24:41 +01:00
test_kwargs_and_defaults.py Minor pytest maintenance (#702) 2017-03-10 15:42:42 +01:00
test_methods_and_attributes.cpp Don't allow mixed static/non-static overloads 2017-04-18 17:17:47 -04:00
test_methods_and_attributes.py Don't allow mixed static/non-static overloads 2017-04-18 17:17:47 -04:00
test_modules.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_modules.py Add __module__ attribute to all pybind11 builtin types (#729) 2017-03-15 15:38:14 +01:00
test_multiple_inheritance.cpp Fix downcasting of base class pointers 2017-04-27 09:12:41 -04:00
test_multiple_inheritance.py Fix downcasting of base class pointers 2017-04-27 09:12:41 -04:00
test_numpy_array.cpp Accept abitrary containers and iterators for shape/strides 2017-04-13 09:57:02 -04:00
test_numpy_array.py array: set exception message on failure 2017-04-13 09:53:56 -04:00
test_numpy_dtypes.cpp Add function for comparing buffer_info formats to types 2017-03-14 02:50:04 +01:00
test_numpy_dtypes.py Add function for comparing buffer_info formats to types 2017-03-14 02:50:04 +01:00
test_numpy_vectorize.cpp vectorize: trivial handling for F-order arrays 2017-03-21 18:53:56 -03:00
test_numpy_vectorize.py vectorize: trivial handling for F-order arrays 2017-03-21 18:53:56 -03:00
test_opaque_types.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_opaque_types.py Prefer non-converting argument overloads 2017-02-03 20:47:17 -05:00
test_operator_overloading.cpp Make test initialization self-registering 2016-09-03 17:34:41 -04:00
test_operator_overloading.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_pickling.cpp fix segfault in test suite due to typo (fixes #586) 2017-01-04 15:05:20 +01:00
test_pickling.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00
test_python_types.cpp Improve make_tuple error message under debugging 2017-04-05 11:43:05 -04:00
test_python_types.py Improve make_tuple error message under debugging 2017-04-05 11:43:05 -04:00
test_sequences_and_iterators.cpp Add lightweight iterators for tuple, list and sequence 2017-02-26 23:57:03 +01:00
test_sequences_and_iterators.py Add lightweight iterators for tuple, list and sequence 2017-02-26 23:57:03 +01:00
test_smart_ptr.cpp Throw an exception when attempting to load an incompatible holder 2017-03-21 10:26:22 +01:00
test_smart_ptr.py Throw an exception when attempting to load an incompatible holder 2017-03-21 10:26:22 +01:00
test_stl_binders.cpp Add the buffer interface for wrapped STL vectors 2017-03-14 02:50:04 +01:00
test_stl_binders.py Keep skipping buffer tests on pypy 2017-04-18 14:21:31 -04:00
test_virtual_functions.cpp Update OVERLOAD macros to support ref/ptr return type overloads 2016-09-11 01:21:53 -04:00
test_virtual_functions.py WIP: PyPy support (#527) 2016-12-16 15:00:46 +01:00