found a critical bug. need to change the qse_awk_run() function
This commit is contained in:
@ -265,12 +265,15 @@ static int set_global (
|
||||
{
|
||||
qse_awk_val_t* old;
|
||||
|
||||
qse_printf (QSE_T("################\n"));
|
||||
old = STACK_GLOBAL (run, idx);
|
||||
qse_printf (QSE_T("@@@@@@@@@@@@@@@@@@@\n"));
|
||||
if (old->type == QSE_AWK_VAL_MAP)
|
||||
{
|
||||
/* once a variable becomes a map,
|
||||
* it cannot be changed to a scalar variable */
|
||||
|
||||
qse_printf (QSE_T("%%%%%%%%%%%%%%%%%%%%\n"));
|
||||
if (var != QSE_NULL)
|
||||
{
|
||||
/* global variable */
|
||||
@ -347,13 +350,16 @@ static int set_global (
|
||||
qse_char_t* fs_ptr;
|
||||
qse_size_t fs_len;
|
||||
|
||||
qse_printf (QSE_T("aaaaaaaaaaaa\n"));
|
||||
if (val->type == QSE_AWK_VAL_STR)
|
||||
{
|
||||
qse_printf (QSE_T("bbbbbbbbbbbbb\n"));
|
||||
fs_ptr = ((qse_awk_val_str_t*)val)->ptr;
|
||||
fs_len = ((qse_awk_val_str_t*)val)->len;
|
||||
}
|
||||
else
|
||||
{
|
||||
qse_printf (QSE_T("ccccccccccc\n"));
|
||||
/* due to the expression evaluation rule, the
|
||||
* regular expression can not be an assigned value */
|
||||
QSE_ASSERT (val->type != QSE_AWK_VAL_REX);
|
||||
@ -367,6 +373,7 @@ static int set_global (
|
||||
{
|
||||
void* rex;
|
||||
|
||||
qse_printf (QSE_T("dddddddddddddd\n"));
|
||||
/* compile the regular expression */
|
||||
/* TODO: use safebuild */
|
||||
rex = QSE_AWK_BUILDREX (
|
||||
@ -383,9 +390,12 @@ static int set_global (
|
||||
QSE_AWK_FREEREX (run->awk, run->global.fs);
|
||||
}
|
||||
run->global.fs = rex;
|
||||
qse_printf (QSE_T("eeeeeeeeeeeeee\n"));
|
||||
}
|
||||
|
||||
qse_printf (QSE_T("fffffffffffff\n"));
|
||||
if (val->type != QSE_AWK_VAL_STR) QSE_AWK_FREE (run->awk, fs_ptr);
|
||||
qse_printf (QSE_T("ggggggggggggg\n"));
|
||||
}
|
||||
else if (idx == QSE_AWK_GLOBAL_IGNORECASE)
|
||||
{
|
||||
|
Reference in New Issue
Block a user