diff --git a/include/pybind11/detail/class.h b/include/pybind11/detail/class.h index 7a5dd0130d..10456ec209 100644 --- a/include/pybind11/detail/class.h +++ b/include/pybind11/detail/class.h @@ -222,7 +222,7 @@ inline bool deregister_instance_impl(void *ptr, instance *self) { auto ®istered_instances = get_internals().registered_instances; auto range = registered_instances.equal_range(ptr); for (auto it = range.first; it != range.second; ++it) { - if (Py_TYPE(self) == Py_TYPE(it->second)) { + if (Py_TYPE(self) == Py_TYPE(it->second) && self == it->second) { registered_instances.erase(it); return true; }