Issue #4850: Change COUNT_ALLOCS variables to Py_ssize_t.
diff --git a/Misc/NEWS b/Misc/NEWS
index cd6bec6..7a903d2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,8 @@
 Core and Builtins
 -----------------
 
+- Issue #4850: Change COUNT_ALLOCS variables to Py_ssize_t.
+
 - Issue #1180193: When importing a module from a .pyc (or .pyo) file with
   an existing .py counterpart, override the co_filename attributes of all
   code objects if the original filename is obsolete (which can happen if the
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 9baee8e..d4532f4 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -78,7 +78,8 @@
 static PyIntObject *small_ints[NSMALLNEGINTS + NSMALLPOSINTS];
 #endif
 #ifdef COUNT_ALLOCS
-int quick_int_allocs, quick_neg_int_allocs;
+Py_ssize_t quick_int_allocs;
+Py_ssize_t quick_neg_int_allocs;
 #endif
 
 PyObject *
diff --git a/Objects/object.c b/Objects/object.c
index 7b82db9..1e0db4a 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -81,24 +81,29 @@
    garbage itself. If unlist_types_without_objects
    is set, they will be removed from the type_list
    once the last object is deallocated. */
-int unlist_types_without_objects;
-extern int tuple_zero_allocs, fast_tuple_allocs;
-extern int quick_int_allocs, quick_neg_int_allocs;
-extern int null_strings, one_strings;
+static int unlist_types_without_objects;
+extern Py_ssize_t tuple_zero_allocs, fast_tuple_allocs;
+extern Py_ssize_t quick_int_allocs, quick_neg_int_allocs;
+extern Py_ssize_t null_strings, one_strings;
 void
 dump_counts(FILE* f)
 {
 	PyTypeObject *tp;
 
 	for (tp = type_list; tp; tp = tp->tp_next)
-		fprintf(f, "%s alloc'd: %d, freed: %d, max in use: %d\n",
+		fprintf(f, "%s alloc'd: %" PY_FORMAT_SIZE_T "d, "
+			"freed: %" PY_FORMAT_SIZE_T "d, "
+			"max in use: %" PY_FORMAT_SIZE_T "d\n",
 			tp->tp_name, tp->tp_allocs, tp->tp_frees,
 			tp->tp_maxalloc);
-	fprintf(f, "fast tuple allocs: %d, empty: %d\n",
+	fprintf(f, "fast tuple allocs: %" PY_FORMAT_SIZE_T "d, "
+		"empty: %" PY_FORMAT_SIZE_T "d\n",
 		fast_tuple_allocs, tuple_zero_allocs);
-	fprintf(f, "fast int allocs: pos: %d, neg: %d\n",
+	fprintf(f, "fast int allocs: pos: %" PY_FORMAT_SIZE_T "d, "
+		"neg: %" PY_FORMAT_SIZE_T "d\n",
 		quick_int_allocs, quick_neg_int_allocs);
-	fprintf(f, "null strings: %d, 1-strings: %d\n",
+	fprintf(f, "null strings: %" PY_FORMAT_SIZE_T "d, "
+		"1-strings: %" PY_FORMAT_SIZE_T "d\n",
 		null_strings, one_strings);
 }
 
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 2c365fb..8f82f4f 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -7,7 +7,7 @@
 #include <stddef.h>
 
 #ifdef COUNT_ALLOCS
-int null_strings, one_strings;
+Py_ssize_t null_strings, one_strings;
 #endif
 
 static PyStringObject *characters[UCHAR_MAX + 1];
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index b1a7003..d7cb25a 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -19,8 +19,8 @@
 static int numfree[PyTuple_MAXSAVESIZE];
 #endif
 #ifdef COUNT_ALLOCS
-int fast_tuple_allocs;
-int tuple_zero_allocs;
+Py_ssize_t fast_tuple_allocs;
+Py_ssize_t tuple_zero_allocs;
 #endif
 
 PyObject *