From 4281cef2057e24384a1d59b6bcf9e9161fde26e8 Mon Sep 17 00:00:00 2001 From: Neal Norwitz Date: Sat, 4 Mar 2006 19:58:13 +0000 Subject: [PATCH] Use Py_ssize_t for _Py_RefTotal. I tried to handle Win64 properly, but please review. --- Include/object.h | 2 +- Python/pythonrun.c | 18 ++++++++++++------ Python/sysmodule.c | 2 +- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Include/object.h b/Include/object.h index 5db92db24e6..2eb2b44c658 100644 --- a/Include/object.h +++ b/Include/object.h @@ -568,7 +568,7 @@ environment the global variable trick is not safe.) * #ifdefs (we used to do that -- it was impenetrable). */ #ifdef Py_REF_DEBUG -PyAPI_DATA(long) _Py_RefTotal; +PyAPI_DATA(Py_ssize_t) _Py_RefTotal; PyAPI_FUNC(void) _Py_NegativeRefcount(const char *fname, int lineno, PyObject *op); #define _Py_INC_REFTOTAL _Py_RefTotal++ diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 87418d8a81a..3f934d6ba26 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -29,6 +29,16 @@ #include "windows.h" #endif +#ifndef Py_REF_DEBUG +# define PRINT_TOTAL_REFS() +#else /* Py_REF_DEBUG */ +# if defined(MS_WIN64) +# define PRINT_TOTAL_REFS() fprintf(stderr, "[%zd refs]\n", _Py_RefTotal); +# else /* ! MS_WIN64 */ +# define PRINT_TOTAL_REFS() fprintf(stderr, "[%ld refs]\n", _Py_RefTotal); +# endif /* MS_WIN64 */ +#endif + extern char *Py_GetPath(void); extern grammar _PyParser_Grammar; /* From graminit.c */ @@ -382,9 +392,7 @@ Py_Finalize(void) dump_counts(); #endif -#ifdef Py_REF_DEBUG - fprintf(stderr, "[%ld refs]\n", _Py_RefTotal); -#endif + PRINT_TOTAL_REFS() #ifdef Py_TRACE_REFS /* Display all objects still alive -- this can invoke arbitrary @@ -674,9 +682,7 @@ PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flag } for (;;) { ret = PyRun_InteractiveOneFlags(fp, filename, flags); -#ifdef Py_REF_DEBUG - fprintf(stderr, "[%ld refs]\n", _Py_RefTotal); -#endif + PRINT_TOTAL_REFS() if (ret == E_EOF) return 0; /* diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 3219b1c4215..a33ac26c610 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -604,7 +604,7 @@ sys_getrefcount(PyObject *self, PyObject *arg) static PyObject * sys_gettotalrefcount(PyObject *self) { - return PyInt_FromLong(_Py_RefTotal); + return PyInt_FromSsize_t(_Py_RefTotal); } #endif /* Py_TRACE_REFS */