From cd9a56c2b0e14f56f2e83dd4db43c5c69a74b232 Mon Sep 17 00:00:00 2001 From: Petr Viktorin Date: Thu, 4 May 2023 09:56:53 +0200 Subject: gh-103509: PEP 697 -- Limited C API for Extending Opaque Types (GH-103511) Co-authored-by: Oleg Iarygin Co-authored-by: Erlend E. Aasland --- Python/structmember.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'Python/structmember.c') diff --git a/Python/structmember.c b/Python/structmember.c index 1b8be28dcf..19a75224a0 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -8,6 +8,12 @@ PyObject * PyMember_GetOne(const char *obj_addr, PyMemberDef *l) { PyObject *v; + if (l->flags & Py_RELATIVE_OFFSET) { + PyErr_SetString( + PyExc_SystemError, + "PyMember_GetOne used with Py_RELATIVE_OFFSET"); + return NULL; + } const char* addr = obj_addr + l->offset; switch (l->type) { @@ -103,6 +109,12 @@ int PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) { PyObject *oldv; + if (l->flags & Py_RELATIVE_OFFSET) { + PyErr_SetString( + PyExc_SystemError, + "PyMember_SetOne used with Py_RELATIVE_OFFSET"); + return -1; + } addr += l->offset; -- cgit v1.2.1