Revert "One way to deal with the order dependency issue. This is not the best way, more like a proof of concept."

This reverts commit eb09c6c1b9.
This commit is contained in:
Ralf W. Grosse-Kunstleve 2023-07-28 13:26:24 -07:00
parent eec2d81d82
commit 9c7d2676c9

View File

@ -726,30 +726,15 @@ public:
// if we can find an exact match (or, for a simple C++ type, an inherited match); if // if we can find an exact match (or, for a simple C++ type, an inherited match); if
// so, we can safely reinterpret_cast to the relevant pointer. // so, we can safely reinterpret_cast to the relevant pointer.
if (bases.size() > 1) { if (bases.size() > 1) {
type_info *best_base = nullptr;
if (no_cpp_mi) {
for (auto *base : bases) { for (auto *base : bases) {
if (PyType_IsSubtype(base->type, typeinfo->type)) { if (no_cpp_mi ? PyType_IsSubtype(base->type, typeinfo->type)
if (best_base == nullptr : base->type == typeinfo->type) {
|| PyType_IsSubtype(base->type, best_base->type)) {
best_base = base;
}
}
}
} else {
for (auto *base : bases) {
if (base->type == typeinfo->type) {
best_base = base;
break;
}
}
}
if (best_base != nullptr) {
this_.load_value( this_.load_value(
reinterpret_cast<instance *>(src.ptr())->get_value_and_holder(best_base)); reinterpret_cast<instance *>(src.ptr())->get_value_and_holder(base));
return true; return true;
} }
} }
}
// Case 2c: C++ multiple inheritance is involved and we couldn't find an exact type // Case 2c: C++ multiple inheritance is involved and we couldn't find an exact type
// match in the registered bases, above, so try implicit casting (needed for proper C++ // match in the registered bases, above, so try implicit casting (needed for proper C++