Add error_scope to py::class_::dealloc() to protect destructor calls (#2342)

Fixes issue #1878
This commit is contained in:
jbarlow83
2020-07-31 17:46:12 -07:00
committed by GitHub
parent b8047245bb
commit 4d90f1a199
3 changed files with 24 additions and 0 deletions

View File

@@ -379,6 +379,17 @@ TEST_SUBMODULE(class_, m) {
// test_non_final_final
struct IsNonFinalFinal {};
py::class_<IsNonFinalFinal>(m, "IsNonFinalFinal", py::is_final());
struct PyPrintDestructor {
PyPrintDestructor() {}
~PyPrintDestructor() {
py::print("Print from destructor");
}
void throw_something() { throw std::runtime_error("error"); }
};
py::class_<PyPrintDestructor>(m, "PyPrintDestructor")
.def(py::init<>())
.def("throw_something", &PyPrintDestructor::throw_something);
}
template <int N> class BreaksBase { public: