Re: [PATCH] Fix _REENT_EMERGENCY() if TLS is enabled

Corinna Vinschen <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <[email protected]>
On Apr 26 08:26, Sebastian Huber wrote:
> If the thread-local storage (TLS) support was enabled, the _REENT_EMERGENCY()
> object had the wrong size.  It must be a buffer of length _REENT_EMERGENCY_SIZE
> and not just a single character.
> ---
>  newlib/libc/include/sys/reent.h | 2 +-
>  newlib/libc/stdio/tmpnam.c      | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
> index 6d8b005b2b..c71f75dbc2 100644
> --- a/newlib/libc/include/sys/reent.h
> +++ b/newlib/libc/include/sys/reent.h
> @@ -812,7 +812,7 @@ extern _Thread_local int _tls_cvtlen;
>  #define _REENT_CVTLEN(_ptr) (_tls_cvtlen)
>  extern _Thread_local void (*_tls_cleanup)(struct _reent *);
>  #define _REENT_CLEANUP(_ptr) (_tls_cleanup)
> -extern _Thread_local char _tls_emergency;
> +extern _Thread_local char _tls_emergency[_REENT_EMERGENCY_SIZE];
>  #define _REENT_EMERGENCY(_ptr) (_tls_emergency)
>  extern _Thread_local int _tls_errno;
>  #define _REENT_ERRNO(_ptr) (_tls_errno)
> diff --git a/newlib/libc/stdio/tmpnam.c b/newlib/libc/stdio/tmpnam.c
> index 51dfd1cea6..dc04cf3f6c 100644
> --- a/newlib/libc/stdio/tmpnam.c
> +++ b/newlib/libc/stdio/tmpnam.c
> @@ -84,7 +84,7 @@ The global pointer <<environ>> is also required.
>  
>  #ifdef _REENT_THREAD_LOCAL
>  _Thread_local int _tls_inc;
> -_Thread_local char _tls_emergency;
> +_Thread_local char _tls_emergency[_REENT_EMERGENCY_SIZE];
>  #endif
>  
>  /* Try to open the file specified, if it can't be opened then try
> -- 
> 2.35.3

LGTM

Thanks,
Corinna
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.