*** empty log message ***

This commit is contained in:
hyung-hwan 2006-09-28 14:21:45 +00:00
parent 35f724b6c9
commit 012777d425
4 changed files with 31 additions and 11 deletions

View File

@ -1,5 +1,5 @@
/*
* $Id: parse.c,v 1.183 2006-09-27 14:13:33 bacon Exp $
* $Id: parse.c,v 1.184 2006-09-28 14:21:23 bacon Exp $
*/
#include <xp/awk/awk_i.h>
@ -1432,6 +1432,14 @@ static xp_awk_nde_t* __parse_binary_expr (
xp_awk_clrpt (awk, right);
((xp_awk_nde_int_t*)left)->val = l;
if (((xp_awk_nde_int_t*)left)->str != XP_NULL)
{
XP_AWK_FREE (awk, ((xp_awk_nde_int_t*)left)->str);
((xp_awk_nde_int_t*)left)->str = XP_NULL;
((xp_awk_nde_int_t*)left)->len = 0;
}
continue;
}
else if (left->type == XP_AWK_NDE_REAL &&
@ -1451,6 +1459,14 @@ static xp_awk_nde_t* __parse_binary_expr (
xp_awk_clrpt (awk, right);
((xp_awk_nde_real_t*)left)->val = l;
if (((xp_awk_nde_real_t*)left)->str != XP_NULL)
{
XP_AWK_FREE (awk, ((xp_awk_nde_real_t*)left)->str);
((xp_awk_nde_real_t*)left)->str = XP_NULL;
((xp_awk_nde_real_t*)left)->len = 0;
}
continue;
}
/* TODO: enhance constant folding more... */

View File

@ -1,5 +1,5 @@
/*
* $Id: tree.c,v 1.76 2006-09-28 06:56:30 bacon Exp $
* $Id: tree.c,v 1.77 2006-09-28 14:21:23 bacon Exp $
*/
#include <xp/awk/awk_i.h>
@ -991,14 +991,16 @@ void xp_awk_clrpt (xp_awk_t* awk, xp_awk_nde_t* tree)
case XP_AWK_NDE_INT:
{
XP_AWK_FREE (awk, ((xp_awk_nde_int_t*)p)->str);
if (((xp_awk_nde_int_t*)p)->str != XP_NULL)
XP_AWK_FREE (awk, ((xp_awk_nde_int_t*)p)->str);
XP_AWK_FREE (awk, p);
break;
}
case XP_AWK_NDE_REAL:
{
XP_AWK_FREE (awk, ((xp_awk_nde_real_t*)p)->str);
if (((xp_awk_nde_real_t*)p)->str != XP_NULL)
XP_AWK_FREE (awk, ((xp_awk_nde_real_t*)p)->str);
XP_AWK_FREE (awk, p);
break;
}

View File

@ -1,5 +1,5 @@
/*
* $Id: val.c,v 1.63 2006-09-28 06:56:30 bacon Exp $
* $Id: val.c,v 1.64 2006-09-28 14:21:23 bacon Exp $
*/
#include <xp/awk/awk_i.h>
@ -384,7 +384,7 @@ xp_char_t* xp_awk_valtostr (
{
xp_awk_val_int_t* vi = (xp_awk_val_int_t*)v;
if (vi->nde != XP_NULL)
if (vi->nde != XP_NULL && vi->nde->str != XP_NULL)
{
return __str_to_str (
run, vi->nde->str, vi->nde->len,
@ -400,7 +400,7 @@ xp_char_t* xp_awk_valtostr (
{
xp_awk_val_real_t* vr = (xp_awk_val_real_t*)v;
if (vr->nde != XP_NULL)
if (vr->nde != XP_NULL && vr->nde->str != XP_NULL)
{
return __str_to_str (
run, vr->nde->str, vr->nde->len,
@ -564,10 +564,10 @@ static xp_char_t* __val_real_to_str (
#if (XP_SIZEOF_LONG_DOUBLE != 0)
run->awk->syscas->sprintf (
tbuf, xp_countof(tbuf), XP_T("%Lf"), (long double)v->val);
tbuf, xp_countof(tbuf), XP_T("%.30Lg"), (long double)v->val);
#elif (XP_SIZEOF_DOUBLE != 0)
run->awk->syscas->sprintf (
tbuf, xp_countof(tbuf), XP_T("%f"), (double)v->val);
tbuf, xp_countof(tbuf), XP_T("%.30g"), (double)v->val);
#else
#error unsupported floating-point data type
#endif

View File

@ -39,6 +39,8 @@ BEGIN {
print "\" \" > a: " (" " > a);
print "\" \" < a: " (" " < a);
a[10] = 2;
print a == 1;
#a[10] = 2;
#print a == 1;
print (0.234 + 1.01123);
}