# 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: