]> granicus.if.org Git - python/commitdiff
Merged revisions 71229,71271 via svnmerge from
authorMatthias Klose <doko@ubuntu.com>
Tue, 7 Apr 2009 13:24:27 +0000 (13:24 +0000)
committerMatthias Klose <doko@ubuntu.com>
Tue, 7 Apr 2009 13:24:27 +0000 (13:24 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r71229 | matthias.klose | 2009-04-05 14:43:08 +0200 (So, 05 Apr 2009) | 3 lines

  - Py_DECREF: Add `do { ... } while (0)' to avoid compiler warnings.
    (avoiding brown paper typo this time)
........
  r71271 | matthias.klose | 2009-04-05 23:19:13 +0200 (So, 05 Apr 2009) | 3 lines

  Issue #1113244: Py_XINCREF, Py_DECREF, Py_XDECREF: Add `do { ... } while (0)'
  to avoid compiler warnings.
........

Include/object.h
Misc/NEWS
Modules/readline.c

index c71bca64be7de4476ac875cb79ceb55ec325ae31..d79b6aba8befd8837861f3577de0b5ea148a57e6 100644 (file)
@@ -651,11 +651,13 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force);
        ((PyObject*)(op))->ob_refcnt++)
 
 #define Py_DECREF(op)                                  \
-       if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA       \
-           --((PyObject*)(op))->ob_refcnt != 0)                \
-               _Py_CHECK_REFCNT(op)                    \
-       else                                            \
-               _Py_Dealloc((PyObject *)(op))
+       do {                                            \
+           if (_Py_DEC_REFTOTAL  _Py_REF_DEBUG_COMMA   \
+               --((PyObject*)(op))->ob_refcnt != 0)    \
+                   _Py_CHECK_REFCNT(op)                \
+           else                                        \
+               _Py_Dealloc((PyObject *)(op));          \
+        } while (0)
 
 /* Safely decref `op` and set `op` to NULL, especially useful in tp_clear
  * and tp_dealloc implementatons.
@@ -701,8 +703,8 @@ PyAPI_FUNC(void) _Py_AddToAllObjects(PyObject *, int force);
         } while (0)
 
 /* Macros to use in case the object pointer may be NULL: */
-#define Py_XINCREF(op) if ((op) == NULL) ; else Py_INCREF(op)
-#define Py_XDECREF(op) if ((op) == NULL) ; else Py_DECREF(op)
+#define Py_XINCREF(op) do { if ((op) == NULL) ; else Py_INCREF(op); } while (0)
+#define Py_XDECREF(op) do { if ((op) == NULL) ; else Py_DECREF(op); } while (0)
 
 /*
 These are provided as conveniences to Python runtime embedders, so that
index aaf2b30abd6df59a75dca5487527dccc7770b703..1dd5d68aadf61bdd572b81a332992095d210b2d9 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 3.1 beta 1?
 Core and Builtins
 -----------------
 
+- Issue #1113244: Py_XINCREF, Py_DECREF, Py_XDECREF: Add `do { ... } while (0)'
+  to avoid compiler warnings.
+
 Library
 -------
 
@@ -78,8 +81,6 @@ Core and Builtins
 - Issue #3845: In PyRun_SimpleFileExFlags avoid invalid memory access with
   short file names.
 
-- Py_DECREF: Add `do { ... } while (0)' to avoid compiler warnings.
-
 Library
 -------
 
index 22f3dc049422cded85a0f338f4f1c103eaf19ba0..8925d8da004c42ccfebc33f13121b0195eef0c99 100644 (file)
@@ -693,13 +693,13 @@ on_completion_display_matches_hook(char **matches,
        r = PyObject_CallFunction(completion_display_matches_hook,
                                  "sOi", matches[0], m, max_length);
 
-       Py_DECREF(m), m=NULL;
+       Py_DECREF(m); m=NULL;
        
        if (r == NULL ||
                (r != Py_None && PyLong_AsLong(r) == -1 && PyErr_Occurred())) {
                goto error;
        }
-       Py_XDECREF(r), r=NULL;
+       Py_XDECREF(r); r=NULL;
 
        if (0) {
        error: