From db9af62ad88967e617022c962c03f3e41f302b40 Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Sat, 23 Jan 2021 11:46:14 -0800 Subject: [PATCH] Cleaning up loaded_as_raw_ptr_unowned, loaded_as_shared_ptr. --- include/pybind11/detail/classh_type_casters.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/include/pybind11/detail/classh_type_casters.h b/include/pybind11/detail/classh_type_casters.h index 56790744d..b6a0cca14 100644 --- a/include/pybind11/detail/classh_type_casters.h +++ b/include/pybind11/detail/classh_type_casters.h @@ -232,23 +232,18 @@ struct smart_holder_type_caster_load { } T *loaded_as_raw_ptr_unowned() { - // BYPASSES smart_holder type checking completely. - if (load_impl.loaded_v_h_cpptype != nullptr) { - if (load_impl.reinterpret_cast_deemed_ok) { - return static_cast(loaded_smhldr_ptr->vptr.get()); - } - if (load_impl.implicit_cast != nullptr) { - void *implicit_casted = load_impl.implicit_cast(loaded_smhldr_ptr->vptr.get()); - return static_cast(implicit_casted); - } + void *void_ptr = loaded_smhldr_ptr->as_raw_ptr_unowned(); + if (load_impl.loaded_v_h_cpptype == nullptr || load_impl.reinterpret_cast_deemed_ok + || load_impl.implicit_cast == nullptr) { + return static_cast(void_ptr); } - return static_cast(loaded_smhldr_ptr->vptr.get()); + void *implicit_casted = load_impl.implicit_cast(void_ptr); + return static_cast(implicit_casted); } std::shared_ptr loaded_as_shared_ptr() { T *raw_ptr = loaded_as_raw_ptr_unowned(); - // BYPASSES smart_holder shared_ptr tracking completely. - return std::shared_ptr(loaded_smhldr_ptr->vptr, raw_ptr); + return std::shared_ptr(loaded_smhldr_ptr->as_shared_ptr(), raw_ptr); } std::unique_ptr loaded_as_unique_ptr() {