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