core: use ::operator delete for RVec heavy storage on Windows#22460
core: use ::operator delete for RVec heavy storage on Windows#22460wacfrr wants to merge 1 commit into
Conversation
|
This will need a matching change in the RNTuple treatment of RVecs |
Test Results 22 files 22 suites 3d 11h 8m 43s ⏱️ Results for commit d86cdb5. |
|
/format Hi, thanks for triggering the CI! I have just run the local test suites for both Regarding the I've left a Let's monitor the rest of the CI matrix results to see if there are any other hidden regressions. Thanks again! I understand that this is a critical modification involving core behaviors, and I would be more than happy to continue our discussion on how to properly align this with the rest of the ecosystem. |
|
@wacfrr it seems to be working for |
This Pull request:
Fixes a cross-module/cross-CRT heap allocation mismatch in
RVecon Windows platforms. This issue can lead to undefined behaviors, memory corruption, or silent exits when memory allocated insideRVecis freed across module boundaries (e.g., between a pre-compiled DLL and JIT-generated code).Changes or fixes:
math/vecops/src/RVec.cxx: InSmallVectorBase::grow_pod, replacedmalloc/realloc/freewith::operator new(std::nothrow)and::operator delete, guarded by#ifdef _WIN32.math/vecops/inc/ROOT/RVec.hxx: InSmallVectorTemplateBase::growand destructor-related deallocations, applied the same guarded replacement to ensure all heap operations are unified across the class layout.These changes are strictly restricted to Windows via platform macros; Linux and macOS targets remain completely untouched to preserve their high-performance native
reallocpaths.Checklist:
This PR fixes #22449