From: Neal Norwitz Date: Sat, 4 Mar 2006 19:58:13 +0000 (+0000) Subject: Use Py_ssize_t for _Py_RefTotal. X-Git-Tag: v2.5a0~368 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4281cef2057e24384a1d59b6bcf9e9161fde26e8;p=python Use Py_ssize_t for _Py_RefTotal. I tried to handle Win64 properly, but please review. --- diff --git a/Include/object.h b/Include/object.h index 5db92db24e..2eb2b44c65 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 87418d8a81..3f934d6ba2 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 3219b1c421..a33ac26c61 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 */