Skip to content

Commit 0927c4d

Browse files
authored
chore: Improve PyCapsule exception handling (#4232)
* Improve pycapsule error handling corner cases * Handle another corner case * Simplify err handling code
1 parent ff7b697 commit 0927c4d

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

include/pybind11/pytypes.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -1829,7 +1829,7 @@ class capsule : public object {
18291829
// guard if destructor called while err indicator is set
18301830
error_scope error_guard;
18311831
auto destructor = reinterpret_cast<void (*)(void *)>(PyCapsule_GetContext(o));
1832-
if (PyErr_Occurred()) {
1832+
if (destructor == nullptr && PyErr_Occurred()) {
18331833
throw error_already_set();
18341834
}
18351835
const char *name = get_name_in_error_scope(o);
@@ -1843,7 +1843,7 @@ class capsule : public object {
18431843
}
18441844
});
18451845

1846-
if (!m_ptr || PyCapsule_SetContext(m_ptr, (void *) destructor) != 0) {
1846+
if (!m_ptr || PyCapsule_SetContext(m_ptr, reinterpret_cast<void *>(destructor)) != 0) {
18471847
throw error_already_set();
18481848
}
18491849
}

0 commit comments

Comments
 (0)