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 */ #endif /* !_REENT_SMALL */
#define _REENT_CLEANUP(_ptr) ((_ptr)->__cleanup) #define _REENT_CLEANUP(_ptr) ((_ptr)->__cleanup)
#define _REENT_CVTBUF(_ptr) ((_ptr)->_cvtbuf)
#define _REENT_CVTLEN(_ptr) ((_ptr)->_cvtlen) #define _REENT_CVTLEN(_ptr) ((_ptr)->_cvtlen)
#define _REENT_EMERGENCY(_ptr) ((_ptr)->_emergency) #define _REENT_EMERGENCY(_ptr) ((_ptr)->_emergency)
#define _REENT_ERRNO(_ptr) ((_ptr)->_errno) #define _REENT_ERRNO(_ptr) ((_ptr)->_errno)

View File

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

View File

@ -232,14 +232,14 @@ fcvtbuf (double invalue,
{ {
if (_REENT_CVTLEN(reent) <= ndigit + 35) 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) ndigit + 36)) == NULL)
return NULL; return NULL;
_REENT_CVTLEN(reent) = ndigit + 36; _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; save = fcvt_buf;
@ -281,14 +281,14 @@ ecvtbuf (double invalue,
{ {
if (_REENT_CVTLEN(reent) <= ndigit) 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) ndigit + 1)) == NULL)
return NULL; return NULL;
_REENT_CVTLEN(reent) = ndigit + 1; _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; save = fcvt_buf;