summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2012-12-17 22:05:59 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2012-12-17 22:05:59 (GMT)
commit928405303dfdb740e5b40815a0cfdb2da92f768d (patch)
tree1770f5a48cd9751873ecaba8d73981b19e094b57
parent3438fa496db50ef3cafcfdb3243f2f769bc12ebe (diff)
downloadcpython-928405303dfdb740e5b40815a0cfdb2da92f768d.zip
cpython-928405303dfdb740e5b40815a0cfdb2da92f768d.tar.gz
cpython-928405303dfdb740e5b40815a0cfdb2da92f768d.tar.bz2
Following issue #13390, fix compilation --without-pymalloc, and make sys.getallocatedblocks() return 0 in that situation.
-rw-r--r--Doc/library/sys.rst15
-rw-r--r--Lib/test/test_sys.py7
-rw-r--r--Objects/obmalloc.c7
3 files changed, 21 insertions, 8 deletions
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index ee1f2b2..a906cde 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -396,15 +396,16 @@ always available.
.. function:: getallocatedblocks()
Return the number of memory blocks currently allocated by the interpreter,
- regardless of their size. This function is mainly useful for debugging
- small memory leaks. Because of the interpreter's internal caches, the
- result can vary from call to call; you may have to call
- :func:`_clear_type_cache()` to get more predictable results.
+ regardless of their size. This function is mainly useful for tracking
+ and debugging memory leaks. Because of the interpreter's internal
+ caches, the result can vary from call to call; you may have to call
+ :func:`_clear_type_cache()` and :func:`gc.collect()` to get more
+ predictable results.
- .. versionadded:: 3.4
+ If a Python build or implementation cannot reasonably compute this
+ information, :func:`getallocatedblocks()` is allowed to return 0 instead.
- .. impl-detail::
- Not all Python implementations may be able to return this information.
+ .. versionadded:: 3.4
.. function:: getcheckinterval()
diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py
index 055592b..41f1439 100644
--- a/Lib/test/test_sys.py
+++ b/Lib/test/test_sys.py
@@ -7,6 +7,7 @@ import warnings
import operator
import codecs
import gc
+import sysconfig
# count the number of test runs, used to create unique
# strings to intern in test_intern()
@@ -616,9 +617,13 @@ class SysModuleTest(unittest.TestCase):
"sys.getallocatedblocks unavailable on this build")
def test_getallocatedblocks(self):
# Some sanity checks
+ with_pymalloc = sysconfig.get_config_var('WITH_PYMALLOC')
a = sys.getallocatedblocks()
self.assertIs(type(a), int)
- self.assertGreater(a, 0)
+ if with_pymalloc:
+ self.assertGreater(a, 0)
+ else:
+ self.assertEqual(a, 0)
try:
# While we could imagine a Python session where the number of
# multiple buffer objects would exceed the sharing of references,
diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c
index c82c978..bbe2805 100644
--- a/Objects/obmalloc.c
+++ b/Objects/obmalloc.c
@@ -1316,6 +1316,13 @@ PyObject_Free(void *p)
{
PyMem_FREE(p);
}
+
+Py_ssize_t
+_Py_GetAllocatedBlocks(void)
+{
+ return 0;
+}
+
#endif /* WITH_PYMALLOC */
#ifdef PYMALLOC_DEBUG