]> granicus.if.org Git - python/commitdiff
bpo-35059: Convert Py_XINCREF() to static inline function (GH-10224)
authorVictor Stinner <vstinner@redhat.com>
Mon, 29 Oct 2018 19:52:41 +0000 (20:52 +0100)
committerGitHub <noreply@github.com>
Mon, 29 Oct 2018 19:52:41 +0000 (20:52 +0100)
Convert Py_XINCREF() and Py_XDECREF() macros into static inline
functions.

Include/object.h

index f9c07f7d1398f95ac77f7aff09cecdc5ea88a35e..799c40b2caf04dc5f160ad6be06586bcb779cfb5 100644 (file)
@@ -871,20 +871,24 @@ static inline void _Py_DECREF(const char *filename, int lineno,
         }                                       \
     } while (0)
 
-/* Macros to use in case the object pointer may be NULL: */
-#define Py_XINCREF(op)                                \
-    do {                                              \
-        PyObject *_py_xincref_tmp = (PyObject *)(op); \
-        if (_py_xincref_tmp != NULL)                  \
-            Py_INCREF(_py_xincref_tmp);               \
-    } while (0)
+/* Function to use in case the object pointer can be NULL: */
+static inline void _Py_XINCREF(PyObject *op)
+{
+    if (op != NULL) {
+        Py_INCREF(op);
+    }
+}
 
-#define Py_XDECREF(op)                                \
-    do {                                              \
-        PyObject *_py_xdecref_tmp = (PyObject *)(op); \
-        if (_py_xdecref_tmp != NULL)                  \
-            Py_DECREF(_py_xdecref_tmp);               \
-    } while (0)
+#define Py_XINCREF(op) _Py_XINCREF((PyObject *)(op))
+
+static inline void _Py_XDECREF(PyObject *op)
+{
+    if (op != NULL) {
+        Py_DECREF(op);
+    }
+}
+
+#define Py_XDECREF(op) _Py_XDECREF((PyObject *)(op))
 
 #ifndef Py_LIMITED_API
 /* Safely decref `op` and set `op` to `op2`.