Skip to content

Commit 48c8432

Browse files
authored
Update PyMemberDescrObject struct to match CPython (#5647)
* Update PyMemberDescrObject.d_member type * Set for correct python versions * Appease clippy and add news fragment * Add conditional use
1 parent 17449b5 commit 48c8432

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

newsfragments/5647.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix `PyMemberDescrObject.d_member` type in `pyo3-ffi` to use `PyMemberDef` for Python 3.11+ (was incorrectly `PyGetSetDef`).

pyo3-ffi/src/cpython/descrobject.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use crate::{PyGetSetDef, PyMethodDef, PyObject, PyTypeObject};
22
use std::ffi::{c_char, c_int, c_void};
33

4+
#[cfg(Py_3_11)]
5+
use crate::PyMemberDef;
6+
47
pub type wrapperfunc = Option<
58
unsafe extern "C" fn(
69
slf: *mut PyObject,
@@ -53,7 +56,10 @@ pub struct PyMethodDescrObject {
5356
#[repr(C)]
5457
pub struct PyMemberDescrObject {
5558
pub d_common: PyDescrObject,
59+
#[cfg(not(Py_3_11))]
5660
pub d_member: *mut PyGetSetDef,
61+
#[cfg(Py_3_11)]
62+
pub d_member: *mut PyMemberDef,
5763
}
5864

5965
#[repr(C)]

0 commit comments

Comments
 (0)