This bug resulted in assertion failures when deleting large blocks of memory using core.stdcpp.allocator on Microsoft Windows. _Allocate_manually_vector_aligned sets a sentinel when version(_DEBUG). _Adjust_manually_vector_aligned checks for this sentinel when assertions are enabled without checking version(_DEBUG).
@n8sh created dlang/druntime pull request #3265 "core.stdcpp.allocator: _Adjust_manually_vector_aligned checks for sentinel unconditionally (Windows only)" fixing this issue: - Fix Issue 21371 - core.stdcpp.allocator: _Adjust_manually_vector_aligned checks for sentinel unconditionally (Windows only) This bug resulted in assertion failures when deleting large blocks of memory using core.stdcpp.allocator on Windows. _Allocate_manually_vector_aligned only sets a sentinel when version(_DEBUG) so _Adjust_manually_vector_aligned should only check for this sentinel when version(_DEBUG). Additionally change the linkage of those functions from C++ to D to avoid possible linker confusion. https://github.com/dlang/druntime/pull/3265
dlang/druntime pull request #3265 "core.stdcpp.allocator: _Adjust_manually_vector_aligned checks for sentinel unconditionally (Windows only)" was merged into stable: - c97b571c084ecd097a2d19f86a175085efec95a7 by Nathan Sashihara: Fix Issue 21371 - core.stdcpp.allocator: _Adjust_manually_vector_aligned checks for sentinel unconditionally (Windows only) This bug resulted in assertion failures when deleting large blocks of memory using core.stdcpp.allocator on Windows. _Allocate_manually_vector_aligned only sets a sentinel when version(_DEBUG) so _Adjust_manually_vector_aligned should only check for this sentinel when version(_DEBUG). Additionally change the linkage of those functions from C++ to D to avoid possible linker confusion. Also changed the logic by which allocator.d infers _DEBUG to resemble the the logic for _ITERATOR_DEBUG_LEVEL in utility.d. https://github.com/dlang/druntime/pull/3265
dlang/druntime pull request #3434 "merge stable" was merged into master: - 74287fbe7867896b23eeb01f5663ade8ea0d49e0 by Nathan Sashihara: Fix Issue 21371 - core.stdcpp.allocator: _Adjust_manually_vector_aligned checks for sentinel unconditionally (Windows only) This bug resulted in assertion failures when deleting large blocks of memory using core.stdcpp.allocator on Windows. _Allocate_manually_vector_aligned only sets a sentinel when version(_DEBUG) so _Adjust_manually_vector_aligned should only check for this sentinel when version(_DEBUG). Additionally change the linkage of those functions from C++ to D to avoid possible linker confusion. Also changed the logic by which allocator.d infers _DEBUG to resemble the the logic for _ITERATOR_DEBUG_LEVEL in utility.d. https://github.com/dlang/druntime/pull/3434