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

@ -2536,14 +2536,20 @@ done:
if (ret >= 0)
{
if (rv && qse_awk_rtx_setrefval (rtx, qse_awk_rtx_getarg (rtx, 2), rv) >= 0)
qse_awk_val_t* retv;
if (rv)
{
qse_awk_rtx_setretval (rtx, qse_awk_val_zero);
}
else
{
qse_awk_rtx_setretval (rtx, qse_awk_val_negone);
int x;
qse_awk_rtx_refupval (rtx, rv);
x = qse_awk_rtx_setrefval (rtx, qse_awk_rtx_getarg (rtx, 2), rv);
qse_awk_rtx_refdownval (rtx, rv);
if (x <= -1) retv = qse_awk_val_negone;
else retv = qse_awk_val_zero;
}
else retv = qse_awk_val_negone;
qse_awk_rtx_setretval (rtx, qse_awk_val_zero);
}
return ret;