On Wednesday 26 March 2025 15:26:47 Martin Storsjö wrote:
> On Thu, 20 Mar 2025, Pali Rohár wrote:
> 
> > They are natively available since msvcr80.dll, they are not available in
> > msvcrt.dll. Provide compatibility emulation into all import libraries where
> > they are not available.
> > 
> > Adjust check for _aligned_msize() which is also available since
> > msvcr80.dll.
> > ---
> > mingw-w64-crt/Makefile.am                     |  6 ++++++
> > mingw-w64-crt/misc/_aligned_offset_recalloc.c | 16 ++++++++++++++++
> > mingw-w64-crt/misc/_aligned_recalloc.c        | 16 ++++++++++++++++
> > mingw-w64-crt/misc/_recalloc.c                | 16 ++++++++++++++++
> > mingw-w64-headers/crt/crtdbg.h                |  2 +-
> > mingw-w64-headers/crt/malloc.h                |  2 +-
> > mingw-w64-headers/crt/stdlib.h                |  2 +-
> > 7 files changed, 57 insertions(+), 3 deletions(-)
> > create mode 100644 mingw-w64-crt/misc/_aligned_offset_recalloc.c
> > create mode 100644 mingw-w64-crt/misc/_aligned_recalloc.c
> > create mode 100644 mingw-w64-crt/misc/_recalloc.c
> > 
> 
> > diff --git a/mingw-w64-crt/misc/_recalloc.c b/mingw-w64-crt/misc/_recalloc.c
> > new file mode 100644
> > index 000000000000..5eaecccf1306
> > --- /dev/null
> > +++ b/mingw-w64-crt/misc/_recalloc.c
> > @@ -0,0 +1,16 @@
> > +/**
> > + * 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.
> > + */
> > +
> > +#include <malloc.h>
> > +
> > +void * __cdecl _recalloc(void *memory, size_t count, size_t size)
> > +{
> > +  size_t total_size;
> > +  if (__builtin_mul_overflow(count, size, &total_size))
> > +    return NULL;
> > +  return realloc(memory, total_size);
> > +}
> 
> This doesn't seem right; isn't _recalloc supposed to zero-initialize the
> newly allocated memory - which standard realloc() doesn't do? (The same goes
> for all the other functions in this patch as well.)
> 
> I guess it should be possible to implement this properly using _msize()?
> 
> // Martin

I will recheck it. Some of the patches I wrote more than year ago and
now just rebased. The last one - msize - I retested week ago and worked
fine. I do not remember all details and it is possible that for
something I forgot.

I can prepare mingw-w64 tests for these functionality, this could help
for automatic testing.


_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to