From 18c6b0f85db6683f1d0789e800acfdd35da3ce07 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Mon, 13 Jun 2016 18:39:10 -0400 Subject: Fix usage of scalar type flag bits and fix some bugs in numeric conversions and lint checks. --- array.c | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) (limited to 'array.c') diff --git a/array.c b/array.c index f8051065..afa37954 100644 --- a/array.c +++ b/array.c @@ -1157,17 +1157,8 @@ sort_up_value_type(const void *p1, const void *p2) } /* two scalars */ - /* 2. Resolve MAYBE_NUM, so that have only NUMBER or STRING */ - if ((n1->flags & MAYBE_NUM) != 0) - (void) force_number(n1); - if ((n2->flags & MAYBE_NUM) != 0) - (void) force_number(n2); - - /* 2.5. Resolve INTIND, so that is STRING, and not NUMBER */ - if ((n1->flags & INTIND) != 0) - (void) force_string(n1); - if ((n2->flags & INTIND) != 0) - (void) force_string(n2); + (void) fixtype(n1); + (void) fixtype(n2); if ((n1->flags & NUMBER) != 0 && (n2->flags & NUMBER) != 0) { return cmp_numbers(n1, n2); -- cgit v1.2.3 From 92b5353bf364897f02003c4116cabe6d48ea17eb Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Thu, 30 Jun 2016 09:59:47 -0400 Subject: Use new STFMT_UNUSED define to improve code clarity, and fix some minor stfmt issues. --- array.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'array.c') diff --git a/array.c b/array.c index afa37954..ddd3c084 100644 --- a/array.c +++ b/array.c @@ -704,7 +704,14 @@ value_info(NODE *n) if ((n->flags & (STRING|STRCUR)) == STRCUR) { fprintf(output_fp, "]["); fprintf(output_fp, "stfmt=%d, ", n->stfmt); - fprintf(output_fp, "CONVFMT=\"%s\"", n->stfmt <= -1 ? "%ld" + /* + * If not STFMT_UNUSED, could be CONVFMT or OFMT if last + * used in a print statement. If immutable, could be that it + * was originally set as a string, or it's a number that has + * an integer value. + */ + fprintf(output_fp, "FMT=\"%s\"", + n->stfmt == STFMT_UNUSED ? "%s" : fmt_list[n->stfmt]->stptr); } -- cgit v1.2.3