*** 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> #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_clrpt (awk, right);
((xp_awk_nde_int_t*)left)->val = l; ((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; continue;
} }
else if (left->type == XP_AWK_NDE_REAL && 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_clrpt (awk, right);
((xp_awk_nde_real_t*)left)->val = l; ((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; continue;
} }
/* TODO: enhance constant folding more... */ /* 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> #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: 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); XP_AWK_FREE (awk, p);
break; break;
} }
case XP_AWK_NDE_REAL: 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); XP_AWK_FREE (awk, p);
break; 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> #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; 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 ( return __str_to_str (
run, vi->nde->str, vi->nde->len, 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; 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 ( return __str_to_str (
run, vr->nde->str, vr->nde->len, 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) #if (XP_SIZEOF_LONG_DOUBLE != 0)
run->awk->syscas->sprintf ( 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) #elif (XP_SIZEOF_DOUBLE != 0)
run->awk->syscas->sprintf ( 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 #else
#error unsupported floating-point data type #error unsupported floating-point data type
#endif #endif

View File

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