diff options
| author | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-23 16:31:19 +0000 |
|---|---|---|
| committer | Andreas Monzner <andreas.monzner@multimedia-labs.de> | 2006-11-23 16:31:19 +0000 |
| commit | 7d7ca8ee2eaae704989a1552ad429794d402f550 (patch) | |
| tree | 1586bab92060b0d6f8e6a447990a42e4e9f4a79b /lib/python/python.cpp | |
| parent | 4ea3e16caea18f079d66b387d000d9ba2db8fd1b (diff) | |
| download | enigma2-7d7ca8ee2eaae704989a1552ad429794d402f550.tar.gz enigma2-7d7ca8ee2eaae704989a1552ad429794d402f550.zip | |
add PyObject refcount debugging code
Diffstat (limited to 'lib/python/python.cpp')
| -rw-r--r-- | lib/python/python.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/lib/python/python.cpp b/lib/python/python.cpp index 119bff1c..2636a3d5 100644 --- a/lib/python/python.cpp +++ b/lib/python/python.cpp @@ -1,4 +1,3 @@ -#include <lib/python/python.h> #include <lib/base/eerror.h> /* avoid warnigs :) */ #undef _POSIX_C_SOURCE @@ -8,6 +7,44 @@ extern "C" void init_enigma(); extern void bsodFatal(); +void Impl_Py_DECREF(const char* file, int line, PyObject *obj) +{ + if (!obj) + { + eDebug("decref python object null pointer %s %d!!!", + file, line); + bsodFatal(); + } + if (obj->ob_refcnt <= 0) + { + eDebug("decref python object with refcounting value %d (%s %d)!!!", obj->ob_refcnt, file, line); + bsodFatal(); + } + Py_DECREF(obj); +} + +void Impl_Py_INCREF(const char* file, int line, PyObject *obj) +{ + if (!obj) + { + eDebug("incref python object null pointer %s %d!!!", file, line); + bsodFatal(); + } + if (obj->ob_refcnt <= 0) + { + eDebug("incref python object with refcounting value %d (%s %d)!!!", obj->ob_refcnt, file, line); + bsodFatal(); + } + if (obj->ob_refcnt == 0x7FFFFFFF) + { + eDebug("incref python object with refcounting value %d (MAX_INT!!!) (%s %d)!!!", obj->ob_refcnt, file, line); + bsodFatal(); + } + Py_INCREF(obj); +} + +#include <lib/python/python.h> + DEFINE_REF(TestObj); TestObj::TestObj() |
