summaryrefslogtreecommitdiff
path: root/Programs
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2016-03-14 12:04:26 +0100
committerVictor Stinner <victor.stinner@gmail.com>2016-03-14 12:04:26 +0100
commit34be807ca4dfecc5b0a9e577a48535e738dce32b (patch)
tree38e0e3860b3fabf2be4938330a1d0f37c5b169ab /Programs
parentc877658d1ff5f93f3a2c7b5f0a7ac913b7374838 (diff)
downloadcpython-git-34be807ca4dfecc5b0a9e577a48535e738dce32b.tar.gz
Add PYTHONMALLOC env var
Issue #26516: * Add PYTHONMALLOC environment variable to set the Python memory allocators and/or install debug hooks. * PyMem_SetupDebugHooks() can now also be used on Python compiled in release mode. * The PYTHONMALLOCSTATS environment variable can now also be used on Python compiled in release mode. It now has no effect if set to an empty string. * In debug mode, debug hooks are now also installed on Python memory allocators when Python is configured without pymalloc.
Diffstat (limited to 'Programs')
-rw-r--r--Programs/python.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/Programs/python.c b/Programs/python.c
index 37b10b837e..a7afbc774b 100644
--- a/Programs/python.c
+++ b/Programs/python.c
@@ -24,6 +24,9 @@ main(int argc, char **argv)
int i, res;
char *oldloc;
+ /* Force malloc() allocator to bootstrap Python */
+ (void)_PyMem_SetupAllocators("malloc");
+
argv_copy = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));
argv_copy2 = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1));
if (!argv_copy || !argv_copy2) {
@@ -62,7 +65,13 @@ main(int argc, char **argv)
setlocale(LC_ALL, oldloc);
PyMem_RawFree(oldloc);
+
res = Py_Main(argc, argv_copy);
+
+ /* Force again malloc() allocator to release memory blocks allocated
+ before Py_Main() */
+ (void)_PyMem_SetupAllocators("malloc");
+
for (i = 0; i < argc; i++) {
PyMem_RawFree(argv_copy2[i]);
}