[Python-checkins] gh-99845: _PyObject_DictPointer(): fix dictoffset cast (#99922)
vstinner
webhook-mailer at python.org
Thu Dec 1 08:08:04 EST 2022
https://github.com/python/cpython/commit/9707bf228e008485a3fbb63aa7ee28cf88014f91
commit: 9707bf228e008485a3fbb63aa7ee28cf88014f91
branch: 3.11
author: Victor Stinner <vstinner at python.org>
committer: vstinner <vstinner at python.org>
date: 2022-12-01T14:07:58+01:00
summary:
gh-99845: _PyObject_DictPointer(): fix dictoffset cast (#99922)
Cast size_t to Py_ssize_t, rather than casting it to long. On 64-bit
Windows, long is 32-bit whereas Py_ssize_t is 64-bit.
files:
M Objects/object.c
diff --git a/Objects/object.c b/Objects/object.c
index 6a22f27de0b1..c4f2786c50a0 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1076,8 +1076,9 @@ _PyObject_DictPointer(PyObject *obj)
tsize = -tsize;
}
size_t size = _PyObject_VAR_SIZE(tp, tsize);
+ assert(size <= (size_t)PY_SSIZE_T_MAX);
+ dictoffset += (Py_ssize_t)size;
- dictoffset += (long)size;
_PyObject_ASSERT(obj, dictoffset > 0);
_PyObject_ASSERT(obj, dictoffset % SIZEOF_VOID_P == 0);
}
More information about the Python-checkins
mailing list