Re: [PATCH] libc/stdlib: Fix build failure in nano_calloc

Corinna Vinschen via Newlib <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On Aug 12 15:33, Craig Blackmore wrote:
> commit 588a5e1ddebdf6d74391c7409680ea20e050c0e1 added a non-reentrant
> call to nano_malloc which causes a build failure if INTERNAL_NEWLIB is
> defined.
> 
> Here is a snippet of the error:
> 
> In file included from .../newlib/newlib/libc/stdlib/nano-mallocr.c:38:
> .../newlib/newlib/libc/include/malloc.h:42:25: note: expected 'struct _reent *' but argument is of type 'ptrdiff_t' {aka 'int'}
>    42 | extern void *_malloc_r (struct _reent *, size_t);
>       |                         ^~~~~~~~~~~~~~~
> .../newlib/newlib/libc/stdlib/nano-mallocr.c:67:22: error: too few arguments to function '_malloc_r'
>    67 | #define nano_malloc  _malloc_r
>       |                      ^~~~~~~~~
> .../newlib/newlib/libc/stdlib/nano-mallocr.c:456:11: note: in expansion of macro 'nano_malloc'
>   456 |     mem = nano_malloc(bytes);
>       |           ^~~~~~~~~~~
> In file included from .../newlib/newlib/libc/stdlib/nano-mallocr.c:38:
> .../newlib/newlib/libc/include/malloc.h:42:14: note: declared here
>    42 | extern void *_malloc_r (struct _reent *, size_t);
>       |              ^~~~~~~~~
> .../newlib/newlib/libc/stdlib/nano-mallocr.c:43: warning: "assert" redefined
>    43 | #define assert(x) ((void)0)
>       |
> 
> This patch adds a missing RCALL to the args when calling nano_malloc
> from nano_calloc, so that if the call is reentrant, reent_ptr is passed
> as the first argument.
> 
> The variable `bytes` (also added in 588a5e1d) has been changed from a
> `ptrdiff_t` to `malloc_size_t` as it does not need to be signed. It is
> used to store the product of two unsigned malloc_size_t variables and
> then iff there was no overflow is it passed to malloc and memset which
> both expect size_t which is unsigned.
> 
> Signed-off-by: Craig Blackmore <[email protected]>
> ---
>  newlib/libc/stdlib/nano-mallocr.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Pushed.


Thanks,
Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.