[Python-checkins] bpo-39573: Use Py_TYPE() macro in object.c (GH-18398)

Victor Stinner webhook-mailer at python.org
Fri Feb 7 05:18:43 EST 2020


https://github.com/python/cpython/commit/c65b320a95784d2b2133926921d67ac439259e9f
commit: c65b320a95784d2b2133926921d67ac439259e9f
branch: master
author: Victor Stinner <vstinner at python.org>
committer: GitHub <noreply at github.com>
date: 2020-02-07T11:18:33+01:00
summary:

bpo-39573: Use Py_TYPE() macro in object.c (GH-18398)

Replace direct acccess to PyVarObject.ob_size with usage of the
Py_SIZE() macro.

files:
M Objects/object.c

diff --git a/Objects/object.c b/Objects/object.c
index 503fb867802c1..ff6c497900cf2 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -1041,13 +1041,11 @@ _PyObject_GetDictPtr(PyObject *obj)
     if (dictoffset == 0)
         return NULL;
     if (dictoffset < 0) {
-        Py_ssize_t tsize;
-        size_t size;
-
-        tsize = ((PyVarObject *)obj)->ob_size;
-        if (tsize < 0)
+        Py_ssize_t tsize = Py_SIZE(obj);
+        if (tsize < 0) {
             tsize = -tsize;
-        size = _PyObject_VAR_SIZE(tp, tsize);
+        }
+        size_t size = _PyObject_VAR_SIZE(tp, tsize);
 
         dictoffset += (long)size;
         _PyObject_ASSERT(obj, dictoffset > 0);
@@ -1219,13 +1217,11 @@ _PyObject_GenericGetAttrWithDict(PyObject *obj, PyObject *name,
         dictoffset = tp->tp_dictoffset;
         if (dictoffset != 0) {
             if (dictoffset < 0) {
-                Py_ssize_t tsize;
-                size_t size;
-
-                tsize = ((PyVarObject *)obj)->ob_size;
-                if (tsize < 0)
+                Py_ssize_t tsize = Py_SIZE(obj);
+                if (tsize < 0) {
                     tsize = -tsize;
-                size = _PyObject_VAR_SIZE(tp, tsize);
+                }
+                size_t size = _PyObject_VAR_SIZE(tp, tsize);
                 _PyObject_ASSERT(obj, size <= PY_SSIZE_T_MAX);
 
                 dictoffset += (Py_ssize_t)size;



More information about the Python-checkins mailing list