Add _REENT_CVTBUF(ptr)

Add a _REENT_CVTBUF() macro to encapsulate access to the _cvtbuf
member of struct reent. This will help to replace the struct
member with a thread-local storage object in a follow up patch.
This commit is contained in:
Matt Joyce 2022-02-03 12:24:26 +01:00 committed by Sebastian Huber
parent 315c420e1b
commit 81352a9df9
3 changed files with 9 additions and 8 deletions

View File

@ -719,6 +719,7 @@ struct _reent
#endif /* !_REENT_SMALL */
#define _REENT_CLEANUP(_ptr) ((_ptr)->__cleanup)
#define _REENT_CVTBUF(_ptr) ((_ptr)->_cvtbuf)
#define _REENT_CVTLEN(_ptr) ((_ptr)->_cvtlen)
#define _REENT_EMERGENCY(_ptr) ((_ptr)->_emergency)
#define _REENT_ERRNO(_ptr) ((_ptr)->_errno)

View File

@ -78,8 +78,8 @@ _reclaim_reent (struct _reent *ptr)
_free_r (ptr, ptr->_misc);
#endif
if (ptr->_cvtbuf)
_free_r (ptr, ptr->_cvtbuf);
if (_REENT_CVTBUF(ptr))
_free_r (ptr, _REENT_CVTBUF(ptr));
/* We should free _sig_func to avoid a memory leak, but how to
do it safely considering that a signal may be delivered immediately
after the free?

View File

@ -232,14 +232,14 @@ fcvtbuf (double invalue,
{
if (_REENT_CVTLEN(reent) <= ndigit + 35)
{
if ((fcvt_buf = (char *) _realloc_r (reent, reent->_cvtbuf,
if ((fcvt_buf = (char *) _realloc_r (reent, _REENT_CVTBUF(reent),
ndigit + 36)) == NULL)
return NULL;
_REENT_CVTLEN(reent) = ndigit + 36;
reent->_cvtbuf = fcvt_buf;
_REENT_CVTBUF(reent) = fcvt_buf;
}
fcvt_buf = reent->_cvtbuf ;
fcvt_buf = _REENT_CVTBUF(reent) ;
}
save = fcvt_buf;
@ -281,14 +281,14 @@ ecvtbuf (double invalue,
{
if (_REENT_CVTLEN(reent) <= ndigit)
{
if ((fcvt_buf = (char *) _realloc_r (reent, reent->_cvtbuf,
if ((fcvt_buf = (char *) _realloc_r (reent, _REENT_CVTBUF(reent),
ndigit + 1)) == NULL)
return NULL;
_REENT_CVTLEN(reent) = ndigit + 1;
reent->_cvtbuf = fcvt_buf;
_REENT_CVTBUF(reent) = fcvt_buf;
}
fcvt_buf = reent->_cvtbuf ;
fcvt_buf = _REENT_CVTBUF(reent) ;
}
save = fcvt_buf;