aboutsummaryrefslogtreecommitdiffstats
path: root/gawkapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'gawkapi.c')
-rw-r--r--gawkapi.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/gawkapi.c b/gawkapi.c
index 8ee6543b..3d9f61a9 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -431,24 +431,21 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
val->val_type = AWK_NUMBER;
(void) force_number(node);
- if ((node->flags & NUMCUR) != 0) {
- val->num_value = get_number_d(node);
- ret = awk_true;
- }
+ val->num_value = get_number_d(node);
+ ret = awk_true;
break;
case AWK_STRING:
val->val_type = AWK_STRING;
(void) force_string(node);
- if ((node->flags & STRCUR) != 0) {
- val->str_value.str = node->stptr;
- val->str_value.len = node->stlen;
- ret = awk_true;
- }
+ val->str_value.str = node->stptr;
+ val->str_value.len = node->stlen;
+ ret = awk_true;
break;
case AWK_SCALAR:
+ fixtype(node);
if ((node->flags & NUMBER) != 0) {
val->val_type = AWK_NUMBER;
} else if ((node->flags & STRING) != 0) {
@@ -460,6 +457,7 @@ node_to_awk_value(NODE *node, awk_value_t *val, awk_valtype_t wanted)
case AWK_UNDEFINED:
/* return true and actual type for request of undefined */
+ fixtype(node);
if (node == Nnull_string) {
val->val_type = AWK_UNDEFINED;
ret = awk_true;