changed to prototype of qse_mmgr_t function to accept mmgr itself instead of mmgr->ctx and fixed a memory leak bug under a certain failure condition
This commit is contained in:
@ -262,6 +262,7 @@ int StdAwk::__build_environ (Run* run, void* envptr)
|
||||
if (kptr == QSE_NULL || vptr == QSE_NULL)
|
||||
{
|
||||
if (kptr) QSE_MMGR_FREE (mmgr, kptr);
|
||||
if (vptr) QSE_MMGR_FREE (mmgr, vptr);
|
||||
|
||||
/* mbstowcsdup() may fail for invalid encoding.
|
||||
* so setting the error code to ENOMEM may not
|
||||
@ -282,6 +283,7 @@ int StdAwk::__build_environ (Run* run, void* envptr)
|
||||
if (kptr == QSE_NULL || vptr == QSE_NULL)
|
||||
{
|
||||
if (kptr) QSE_MMGR_FREE (mmgr, kptr);
|
||||
if (vptr) QSE_MMGR_FREE (mmgr, vptr);
|
||||
|
||||
/* mbstowcsdup() may fail for invalid encoding.
|
||||
* so setting the error code to ENOMEM may not
|
||||
|
@ -1769,11 +1769,12 @@ static int __build_environ (
|
||||
if (kptr == QSE_NULL || vptr == QSE_NULL)
|
||||
{
|
||||
if (kptr) QSE_MMGR_FREE (rtx->awk->mmgr, kptr);
|
||||
if (vptr) QSE_MMGR_FREE (rtx->awk->mmgr, vptr);
|
||||
qse_awk_rtx_refdownval (rtx, v_env);
|
||||
|
||||
qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
*eq = QSE_MT('=');
|
||||
#else
|
||||
@ -1787,6 +1788,7 @@ static int __build_environ (
|
||||
if (kptr == QSE_NULL || vptr == QSE_NULL)
|
||||
{
|
||||
if (kptr) QSE_MMGR_FREE (rtx->awk->mmgr, kptr);
|
||||
if (vptr) QSE_MMGR_FREE (rtx->awk->mmgr, vptr);
|
||||
qse_awk_rtx_refdownval (rtx, v_env);
|
||||
|
||||
qse_awk_rtx_seterrnum (rtx, QSE_AWK_ENOMEM, QSE_NULL);
|
||||
|
Reference in New Issue
Block a user