bpo-32043: New "developer mode": "-X dev" option (#4413)
Add a new "developer mode": new "-X dev" command line option to
enable debug checks at runtime.
Changes:
* Add unit tests for -X dev
* test_cmd_line: replace test.support with support.
* Fix _PyRuntimeState_Fini(): Use the same memory allocator
than _PyRuntimeState_Init().
* Fix _PyMem_GetDefaultRawAllocator()
diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c
index 699cce9..7c6973e 100644
--- a/Objects/obmalloc.c
+++ b/Objects/obmalloc.c
@@ -190,8 +190,14 @@
void
_PyMem_GetDefaultRawAllocator(PyMemAllocatorEx *alloc_p)
{
- PyMemAllocatorEx alloc = {NULL, PYRAW_FUNCS};
- *alloc_p = alloc;
+ PyMemAllocatorEx pymem_raw = {
+#ifdef Py_DEBUG
+ &_PyMem_Debug.raw, PYRAWDBG_FUNCS
+#else
+ NULL, PYRAW_FUNCS
+#endif
+ };
+ *alloc_p = pymem_raw;
}
int
@@ -274,13 +280,6 @@
void
_PyMem_Initialize(struct _pymem_runtime_state *state)
{
- PyMemAllocatorEx pymem_raw = {
-#ifdef Py_DEBUG
- &_PyMem_Debug.raw, PYRAWDBG_FUNCS
-#else
- NULL, PYRAW_FUNCS
-#endif
- };
PyMemAllocatorEx pymem = {
#ifdef Py_DEBUG
&_PyMem_Debug.mem, PYDBG_FUNCS
@@ -296,7 +295,7 @@
#endif
};
- state->allocators.raw = pymem_raw;
+ _PyMem_GetDefaultRawAllocator(&state->allocators.raw);
state->allocators.mem = pymem;
state->allocators.obj = pyobject;