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

Index: python2.6-2.6.5+20100521/Include/object.h
===================================================================
--- python2.6-2.6.5+20100521.orig/Include/object.h	2010-05-21 15:54:04.071725596 +0200
+++ python2.6-2.6.5+20100521/Include/object.h	2010-05-21 15:59:45.292709562 +0200
@@ -746,11 +746,13 @@
     ((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.
@@ -796,8 +798,8 @@
     } 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: python2.6-2.6.5+20100521/Modules/readline.c
===================================================================
--- python2.6-2.6.5+20100521.orig/Modules/readline.c	2010-05-21 15:54:04.103742027 +0200
+++ python2.6-2.6.5+20100521/Modules/readline.c	2010-05-21 15:56:38.343710232 +0200
@@ -738,13 +738,13 @@
     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 && PyInt_AsLong(r) == -1 && PyErr_Occurred())) {
         goto error;
     }
-    Py_XDECREF(r), r=NULL;
+    Py_XDECREF(r); r=NULL;
 
     if (0) {
     error:
