>From a90e095d88df6e543372f6b8a7953fa6656be8af Mon Sep 17 00:00:00 2001
From: Zhongteng Gui <[email protected]>
Date: Sat, 29 Aug 2026 23:09:59 +0800
Subject: [PATCH] headers: crt: split out corecrt_malloc.h

memalignment is kept in stdlib.h, as this is part of ISO C23, and MSVC
doesn't provide it.

Also removes _CRT_ALLOCATION_DEFINED.

Signed-off-by: Zhongteng Gui <[email protected]>
---
 mingw-w64-headers/crt/corecrt_malloc.h | 76 ++++++++++++++++++++++++++
 mingw-w64-headers/crt/malloc.h         | 67 +----------------------
 mingw-w64-headers/crt/stdlib.h         | 65 +---------------------
 3 files changed, 78 insertions(+), 130 deletions(-)
 create mode 100644 mingw-w64-headers/crt/corecrt_malloc.h

diff --git a/mingw-w64-headers/crt/corecrt_malloc.h 
b/mingw-w64-headers/crt/corecrt_malloc.h
new file mode 100644
index 000000000..cf14180f2
--- /dev/null
+++ b/mingw-w64-headers/crt/corecrt_malloc.h
@@ -0,0 +1,76 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _INC_CORECRT_MALLOC
+#define _INC_CORECRT_MALLOC
+
+#include <corecrt.h>
+
+_CRT_BEGIN_C_HEADER
+
+#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
+#pragma push_macro("calloc")
+#undef calloc
+#pragma push_macro("free")
+#undef free
+#pragma push_macro("malloc")
+#undef malloc
+#pragma push_macro("realloc")
+#undef realloc
+#pragma push_macro("_aligned_free")
+#undef _aligned_free
+#pragma push_macro("_aligned_malloc")
+#undef _aligned_malloc
+#pragma push_macro("_aligned_offset_malloc")
+#undef _aligned_offset_malloc
+#pragma push_macro("_aligned_realloc")
+#undef _aligned_realloc
+#pragma push_macro("_aligned_offset_realloc")
+#undef _aligned_offset_realloc
+#pragma push_macro("_recalloc")
+#undef _recalloc
+#pragma push_macro("_aligned_recalloc")
+#undef _aligned_recalloc
+#pragma push_macro("_aligned_offset_recalloc")
+#undef _aligned_offset_recalloc
+#pragma push_macro("_aligned_msize")
+#undef _aligned_msize
+#endif
+
+  void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements);
+  void __cdecl free(void *_Memory);
+  void *__cdecl malloc(size_t _Size);
+  void *__cdecl realloc(void *_Memory,size_t _NewSize);
+
+  _CRTIMP void __cdecl _aligned_free(void *_Memory);
+  _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment);
+
+  _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t 
_Alignment,size_t _Offset);
+  _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t 
_Alignment);
+  _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t 
_Size,size_t _Alignment,size_t _Offset);
+  _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
+  _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t 
_Size,size_t _Alignment);
+  _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t 
_Count,size_t _Size,size_t _Alignment,size_t _Offset);
+  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t 
_Offset);
+
+#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
+#pragma pop_macro("calloc")
+#pragma pop_macro("free")
+#pragma pop_macro("malloc")
+#pragma pop_macro("realloc")
+#pragma pop_macro("_aligned_free")
+#pragma pop_macro("_aligned_malloc")
+#pragma pop_macro("_aligned_offset_malloc")
+#pragma pop_macro("_aligned_realloc")
+#pragma pop_macro("_aligned_offset_realloc")
+#pragma pop_macro("_recalloc")
+#pragma pop_macro("_aligned_recalloc")
+#pragma pop_macro("_aligned_offset_recalloc")
+#pragma pop_macro("_aligned_msize")
+#endif
+
+_CRT_END_C_HEADER
+
+#endif
diff --git a/mingw-w64-headers/crt/malloc.h b/mingw-w64-headers/crt/malloc.h
index 64edc3d76..84b3db881 100644
--- a/mingw-w64-headers/crt/malloc.h
+++ b/mingw-w64-headers/crt/malloc.h
@@ -7,6 +7,7 @@
 #define _MALLOC_H_
 
 #include <crtdefs.h>
+#include <corecrt_malloc.h>
 
 _CRT_BEGIN_C_HEADER
 
@@ -38,72 +39,6 @@ _CRT_BEGIN_C_HEADER
 #define _amblksiz (*__p__amblksiz())
   _CRTIMP unsigned int *__cdecl __p__amblksiz(void);
 
-#ifndef _CRT_ALLOCATION_DEFINED
-#define _CRT_ALLOCATION_DEFINED
-
-#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
-#pragma push_macro("calloc")
-#undef calloc
-#pragma push_macro("free")
-#undef free
-#pragma push_macro("malloc")
-#undef malloc
-#pragma push_macro("realloc")
-#undef realloc
-#pragma push_macro("_aligned_free")
-#undef _aligned_free
-#pragma push_macro("_aligned_malloc")
-#undef _aligned_malloc
-#pragma push_macro("_aligned_offset_malloc")
-#undef _aligned_offset_malloc
-#pragma push_macro("_aligned_realloc")
-#undef _aligned_realloc
-#pragma push_macro("_aligned_offset_realloc")
-#undef _aligned_offset_realloc
-#pragma push_macro("_recalloc")
-#undef _recalloc
-#pragma push_macro("_aligned_recalloc")
-#undef _aligned_recalloc
-#pragma push_macro("_aligned_offset_recalloc")
-#undef _aligned_offset_recalloc
-#pragma push_macro("_aligned_msize")
-#undef _aligned_msize
-#endif
-
-  void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements);
-  void __cdecl free(void *_Memory);
-  void *__cdecl malloc(size_t _Size);
-  void *__cdecl realloc(void *_Memory,size_t _NewSize);
-
-  _CRTIMP void __cdecl _aligned_free(void *_Memory);
-  _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment);
-
-  _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t 
_Alignment,size_t _Offset);
-  _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t 
_Alignment);
-  _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t 
_Size,size_t _Alignment,size_t _Offset);
-  _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
-  _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t 
_Size,size_t _Alignment);
-  _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t 
_Count,size_t _Size,size_t _Alignment,size_t _Offset);
-  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t 
_Offset);
-
-#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
-#pragma pop_macro("calloc")
-#pragma pop_macro("free")
-#pragma pop_macro("malloc")
-#pragma pop_macro("realloc")
-#pragma pop_macro("_aligned_free")
-#pragma pop_macro("_aligned_malloc")
-#pragma pop_macro("_aligned_offset_malloc")
-#pragma pop_macro("_aligned_realloc")
-#pragma pop_macro("_aligned_offset_realloc")
-#pragma pop_macro("_recalloc")
-#pragma pop_macro("_aligned_recalloc")
-#pragma pop_macro("_aligned_offset_recalloc")
-#pragma pop_macro("_aligned_msize")
-#endif
-
-#endif
-
 /* Users should really use MS provided versions */
 void * __mingw_aligned_malloc (size_t _Size, size_t _Alignment);
 void __mingw_aligned_free (void *_Memory);
diff --git a/mingw-w64-headers/crt/stdlib.h b/mingw-w64-headers/crt/stdlib.h
index f750e155d..396282210 100644
--- a/mingw-w64-headers/crt/stdlib.h
+++ b/mingw-w64-headers/crt/stdlib.h
@@ -7,6 +7,7 @@
 #define _INC_STDLIB
 
 #include <corecrt.h>
+#include <corecrt_malloc.h>
 #include <corecrt_wstdlib.h>
 #include <limits.h>
 
@@ -404,72 +405,8 @@ float __cdecl __MINGW_NOTHROW strtof(const char * 
__restrict__ _Str,char ** __re
   _CRTIMP size_t __cdecl wcstombs(char * __restrict__ _Dest,const wchar_t * 
__restrict__ _Source,size_t _MaxCount) __MINGW_ATTRIB_DEPRECATED_SEC_WARN;
   _CRTIMP size_t __cdecl _wcstombs_l(char * __restrict__ _Dest,const wchar_t * 
__restrict__ _Source,size_t _MaxCount,_locale_t _Locale) 
__MINGW_ATTRIB_DEPRECATED_SEC_WARN;
 
-#ifndef _CRT_ALLOCATION_DEFINED
-#define _CRT_ALLOCATION_DEFINED
-
-#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
-#pragma push_macro("calloc")
-#undef calloc
-#pragma push_macro("free")
-#undef free
-#pragma push_macro("malloc")
-#undef malloc
-#pragma push_macro("realloc")
-#undef realloc
-#pragma push_macro("_aligned_free")
-#undef _aligned_free
-#pragma push_macro("_aligned_malloc")
-#undef _aligned_malloc
-#pragma push_macro("_aligned_offset_malloc")
-#undef _aligned_offset_malloc
-#pragma push_macro("_aligned_realloc")
-#undef _aligned_realloc
-#pragma push_macro("_aligned_offset_realloc")
-#undef _aligned_offset_realloc
-#pragma push_macro("_recalloc")
-#undef _recalloc
-#pragma push_macro("_aligned_recalloc")
-#undef _aligned_recalloc
-#pragma push_macro("_aligned_offset_recalloc")
-#undef _aligned_offset_recalloc
-#pragma push_macro("_aligned_msize")
-#undef _aligned_msize
-#endif
-
-  void *__cdecl calloc(size_t _NumOfElements,size_t _SizeOfElements);
-  void __cdecl free(void *_Memory);
-  void *__cdecl malloc(size_t _Size);
-  void *__cdecl realloc(void *_Memory,size_t _NewSize);
-  _CRTIMP void __cdecl _aligned_free(void *_Memory);
-  _CRTIMP void *__cdecl _aligned_malloc(size_t _Size,size_t _Alignment);
-  _CRTIMP void *__cdecl _aligned_offset_malloc(size_t _Size,size_t 
_Alignment,size_t _Offset);
-  _CRTIMP void *__cdecl _aligned_realloc(void *_Memory,size_t _Size,size_t 
_Alignment);
-  _CRTIMP void *__cdecl _aligned_offset_realloc(void *_Memory,size_t 
_Size,size_t _Alignment,size_t _Offset);
-  _CRTIMP void *__cdecl _recalloc(void *_Memory,size_t _Count,size_t _Size);
-  _CRTIMP void *__cdecl _aligned_recalloc(void *_Memory,size_t _Count,size_t 
_Size,size_t _Alignment);
-  _CRTIMP void *__cdecl _aligned_offset_recalloc(void *_Memory,size_t 
_Count,size_t _Size,size_t _Alignment,size_t _Offset);
-  _CRTIMP size_t __cdecl _aligned_msize(void *_Memory,size_t _Alignment,size_t 
_Offset);
-
 #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202311L
   size_t __cdecl memalignment(const void *_Memory);
-#endif
-
-#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)
-#pragma pop_macro("calloc")
-#pragma pop_macro("free")
-#pragma pop_macro("malloc")
-#pragma pop_macro("realloc")
-#pragma pop_macro("_aligned_free")
-#pragma pop_macro("_aligned_malloc")
-#pragma pop_macro("_aligned_offset_malloc")
-#pragma pop_macro("_aligned_realloc")
-#pragma pop_macro("_aligned_offset_realloc")
-#pragma pop_macro("_recalloc")
-#pragma pop_macro("_aligned_recalloc")
-#pragma pop_macro("_aligned_offset_recalloc")
-#pragma pop_macro("_aligned_msize")
-#endif
-
 #endif
 
   _CRTIMP int __cdecl _putenv(const char *_EnvString);
-- 
2.55.0.windows.5



_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to