summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Klose <doko@ubuntu.com>2009-04-07 13:24:27 (GMT)
committerMatthias Klose <doko@ubuntu.com>2009-04-07 13:24:27 (GMT)
commit091c7b16ffb2e906e41dbcb7316958ef08eabb16 (patch)
tree80b2d06a50377fa8bb417853f874e845d0ab4d4c
parenta3d29e86611cccb67e59a6f75bb2163f40e4e19e (diff)
downloadcpython-091c7b16ffb2e906e41dbcb7316958ef08eabb16.zip
cpython-091c7b16ffb2e906e41dbcb7316958ef08eabb16.tar.gz
cpython-091c7b16ffb2e906e41dbcb7316958ef08eabb16.tar.bz2
Merged revisions 71229,71271 via svnmerge from
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. ........
-rw-r--r--Include/object.h16
-rw-r--r--Misc/NEWS5
-rw-r--r--Modules/readline.c4
3 files changed, 14 insertions, 11 deletions
diff --git a/Include/object.h b/Include/object.h
index c71bca6..d79b6ab 100644
--- a/Include/object.h
+++ b/Include/object.h
@@ -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
diff --git a/Misc/NEWS b/Misc/NEWS
index aaf2b30..1dd5d68 100644
--- 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
-------
diff --git a/Modules/readline.c b/Modules/readline.c
index 22f3dc0..8925d8d 100644
--- a/Modules/readline.c
+++ b/Modules/readline.c
@@ -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: