]> granicus.if.org Git - python/commitdiff
Use Py_ssize_t for _Py_RefTotal.
authorNeal Norwitz <nnorwitz@gmail.com>
Sat, 4 Mar 2006 19:58:13 +0000 (19:58 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Sat, 4 Mar 2006 19:58:13 +0000 (19:58 +0000)
I tried to handle Win64 properly, but please review.

Include/object.h
Python/pythonrun.c
Python/sysmodule.c

index 5db92db24e61f1f0c54f1859e3efbfff02b6c0ee..2eb2b44c6588b6e45aec9a59b1b313747211e808 100644 (file)
@@ -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++
index 87418d8a81a63ac8b86a69c6f0aa25c91d69045e..3f934d6ba26f0448b4c6de780aa28bdc5e1dd4ae 100644 (file)
 #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;
                /*
index 3219b1c421580c699d53901ee27854263a8af531..a33ac26c6100b9b153ecd0f28e1a265cf2b8273b 100644 (file)
@@ -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 */