PyMemAllocatorDomain domain,
PyMemAllocatorEx *old_alloc);
+PyAPI_FUNC(const char*) _PyMem_GetDebugAllocatorsName(void);
+
#ifdef __cplusplus
}
#endif
'legacy_windows_fs_encoding': 0,
'legacy_windows_stdio': 0,
})
+ DEBUG_ALLOCATOR = 'pymalloc_debug' if support.with_pymalloc() else 'malloc_debug'
# main config
COPY_MAIN_CONFIG = (
def test_init_env_dev_mode(self):
config = dict(self.INIT_ENV_CONFIG,
- allocator='debug',
+ allocator=self.DEBUG_ALLOCATOR,
dev_mode=1)
self.check_config("init_env_dev_mode", config)
config = {
'dev_mode': 1,
'faulthandler': 1,
- 'allocator': 'debug',
+ 'allocator': self.DEBUG_ALLOCATOR,
}
self.check_config("init_dev_mode", config)
#endif
+/* Get the effective name of "debug" memory allocators,
+ as if _PyMem_GetAllocatorsName() is called after
+ _PyMem_SetupAllocators("debug"). */
+const char*
+_PyMem_GetDebugAllocatorsName(void)
+{
+#ifdef WITH_PYMALLOC
+ return "pymalloc_debug";
+#else
+ return "malloc_debug";
+#endif
+}
+
+
static int
pymem_set_default_allocator(PyMemAllocatorDomain domain, int debug,
PyMemAllocatorEx *old_alloc)
static int test_pre_initialization_api(void)
{
+ /* the test doesn't support custom memory allocators */
+ putenv("PYTHONMALLOC=");
+
/* Leading "./" ensures getpath.c can still find the standard library */
_Py_EMBED_PREINIT_CHECK("Checking Py_DecodeLocale\n");
wchar_t *program = Py_DecodeLocale("./spam", NULL);
static int test_bpo20891(void)
{
+ /* the test doesn't support custom memory allocators */
+ putenv("PYTHONMALLOC=");
+
/* bpo-20891: Calling PyGILState_Ensure in a non-Python thread before
calling PyEval_InitThreads() must not crash. PyGILState_Ensure() must
call PyEval_InitThreads() for us in this case. */
/* allocator */
if (config->dev_mode && config->allocator == NULL) {
- config->allocator = _PyMem_RawStrdup("debug");
+ const char *allocator = _PyMem_GetDebugAllocatorsName();
+ config->allocator = _PyMem_RawStrdup(allocator);
if (config->allocator == NULL) {
return _Py_INIT_NO_MEMORY();
}