enhanced qse_awk_rtx_setrefval() to handle references properly

enhanced qse_awk_rtx_valtostr() and qse_awk_rtx_valtonum() to handle references more correctly.
changed some awk error codes.
This commit is contained in:
2013-04-16 10:09:24 +00:00
parent d5cca9d524
commit 23d316a659
11 changed files with 550 additions and 468 deletions

View File

@ -275,21 +275,28 @@ static int read_byid (qse_awk_rtx_t* rtx, dir_list_t* list, qse_long_t id, qse_a
return -1;
}
if (y == 0) return 0;
if (y == 0) return 0; /* no more entry */
tmp = qse_awk_rtx_makestrvalwithstr (rtx, ent.name);
if (!tmp || qse_awk_rtx_setrefval (rtx, ref, tmp) <= -1)
if (!tmp)
{
list->errnum = awk_err_to_errnum (qse_awk_rtx_geterrnum (rtx));
if (tmp)
{
qse_awk_rtx_refupval (rtx, tmp);
qse_awk_rtx_refdownval (rtx, tmp);
}
return -1;
}
else
{
int n;
qse_awk_rtx_refupval (rtx, tmp);
n = qse_awk_rtx_setrefval (rtx, ref, tmp);
qse_awk_rtx_refdownval (rtx, tmp);
if (n <= -1)
{
list->errnum = awk_err_to_errnum (qse_awk_rtx_geterrnum (rtx));
return -1;
}
}
return 0;
return 1; /* has entry */
}
else
{