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:
2014-07-09 15:01:16 +00:00
parent 36b20b4169
commit 82a639045f
10 changed files with 100 additions and 41 deletions

View File

@ -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

View File

@ -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);