From 790d139380b4eb5c08a367cee5dafcb0ac512dd8 Mon Sep 17 00:00:00 2001 From: Nathan Goldbaum Date: Thu, 26 Mar 2026 08:32:15 -0600 Subject: [PATCH] Add missing error handling for `PyModule_FromSlotsAndSpec` --- src/impl_/pymodule.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/impl_/pymodule.rs b/src/impl_/pymodule.rs index 0bdf0e350e2..4a99b1b6fb9 100644 --- a/src/impl_/pymodule.rs +++ b/src/impl_/pymodule.rs @@ -211,11 +211,14 @@ impl ModuleDef { self.module .get_or_try_init(py, || { let slots = self.get_slots(); - let module = unsafe { ffi::PyModule_FromSlotsAndSpec(slots, spec.as_ptr()) }; - if unsafe { ffi::PyModule_SetDocString(module, doc.as_ptr()) } != 0 { + let module = unsafe { + ffi::PyModule_FromSlotsAndSpec(slots, spec.as_ptr()) + .assume_owned_or_err(py)? + } + .cast_into()?; + if unsafe { ffi::PyModule_SetDocString(module.as_ptr(), doc.as_ptr()) } != 0 { return Err(PyErr::fetch(py)); } - let module = unsafe { module.assume_owned_or_err(py)? }.cast_into()?; if unsafe { ffi::PyModule_Exec(module.as_ptr()) } != 0 { return Err(PyErr::fetch(py)); }