summaryrefslogtreecommitdiff
path: root/gdb/python/python-internal.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2013-05-30 08:56:55 +0000
committerPedro Alves <palves@redhat.com>2013-05-30 08:56:55 +0000
commit4f4a50060707b7f669d7962f6f5976d629d9da90 (patch)
tree236cc405d302acd48d3a7a1ebe3becbcd166fab9 /gdb/python/python-internal.h
parent12e31f35b30518836aca25487f8d812804d059e7 (diff)
downloadgdb-4f4a50060707b7f669d7962f6f5976d629d9da90.tar.gz
Fix build breakage with Python 2.4.
With Python 2.4, we see this build failure: ./python/python-internal.h: In function 'gdb_Py_DECREF': ./python/python-internal.h:179: warning: dereferencing 'void *' pointer ./python/python-internal.h:179: error: request for member 'ob_refcnt' in something not a structure or union Python 2.4 forgets to cast 'op' to PyObject pointer on the ob_refcnt accesses: #define Py_DECREF(op) \ if (_Py_DEC_REFTOTAL _Py_REF_DEBUG_COMMA \ --(op)->ob_refcnt != 0) \ _Py_CHECK_REFCNT(op) \ else \ _Py_Dealloc((PyObject *)(op)) ... #define _Py_CHECK_REFCNT(OP) \ { if ((OP)->ob_refcnt < 0) \ _Py_NegativeRefcount(__FILE__, __LINE__, \ (PyObject *)(OP)); \ } Python 2.7: #define Py_DECREF(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) ... #define _Py_CHECK_REFCNT(OP) \ { if (((PyObject*)OP)->ob_refcnt < 0) \ _Py_NegativeRefcount(__FILE__, __LINE__, \ (PyObject *)(OP)); \ } gdb/ 2013-05-30 Pedro Alves <palves@redhat.com> * python/python-internal.h (gdb_Py_DECREF): Cast OP to PyObject pointer.
Diffstat (limited to 'gdb/python/python-internal.h')
-rw-r--r--gdb/python/python-internal.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index f47d48a4195..d947be64b42 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -176,7 +176,10 @@ typedef unsigned long gdb_py_ulongest;
static inline void
gdb_Py_DECREF (void *op) /* ARI: editCase function */
{
- Py_DECREF (op);
+ /* ... and Python 2.4 didn't cast OP to PyObject pointer on the
+ '(op)->ob_refcnt' references within the macro. Cast it ourselves
+ too. */
+ Py_DECREF ((PyObject *) op);
}
#undef Py_DECREF