From ce342a04922797cb53557178c54d32c4efafda16 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Wed, 6 Jul 2016 21:31:22 -0400 Subject: Document string termination in header files and remove no-longer-needed string termination logic in various places. --- int_array.c | 4 ---- 1 file changed, 4 deletions(-) (limited to 'int_array.c') diff --git a/int_array.c b/int_array.c index e7913dea..93e96d1f 100644 --- a/int_array.c +++ b/int_array.c @@ -128,7 +128,6 @@ is_integer(NODE *symbol, NODE *subs) /* must be a STRING */ char *cp = subs->stptr, *cpend, *ptr; - char save; size_t len = subs->stlen; if (len == 0 || (! isdigit((unsigned char) *cp) && *cp != '-')) @@ -151,12 +150,9 @@ is_integer(NODE *symbol, NODE *subs) } cpend = cp + len; - save = *cpend; - *cpend = '\0'; errno = 0; l = strtol(cp, & ptr, 10); - *cpend = save; if (errno != 0 || ptr != cpend) return NULL; -- cgit v1.2.3 From eb261daff5e9a96f294cd806d1fd3e68f06fdbaa Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Wed, 6 Jul 2016 22:29:58 -0400 Subject: Modify MAYBE_NUM usage and typeof function to return "strnum" only for actual numeric strings. --- int_array.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'int_array.c') diff --git a/int_array.c b/int_array.c index 93e96d1f..937a91cf 100644 --- a/int_array.c +++ b/int_array.c @@ -142,7 +142,8 @@ is_integer(NODE *symbol, NODE *subs) if (len == 1 && *cp != '-') { /* single digit */ subs->numbr = (long) (*cp - '0'); if ((subs->flags & MAYBE_NUM) != 0) { - subs->flags &= ~(MAYBE_NUM|STRING); + /* leave MAYBE_NUM set */ + subs->flags &= ~STRING; subs->flags |= NUMBER; } subs->flags |= (NUMCUR|NUMINT); @@ -158,7 +159,8 @@ is_integer(NODE *symbol, NODE *subs) subs->numbr = l; if ((subs->flags & MAYBE_NUM) != 0) { - subs->flags &= ~(MAYBE_NUM|STRING); + /* leave MAYBE_NUM set */ + subs->flags &= ~STRING; subs->flags |= NUMBER; } subs->flags |= NUMCUR; -- cgit v1.2.3 From c86137f472fdf876c2c223c8d99f673f477b7554 Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Fri, 8 Jul 2016 15:26:00 -0400 Subject: Optimization: support unterminated field strings inside gawk, but make terminated copies for the API. --- int_array.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'int_array.c') diff --git a/int_array.c b/int_array.c index 937a91cf..9981fafe 100644 --- a/int_array.c +++ b/int_array.c @@ -128,6 +128,7 @@ is_integer(NODE *symbol, NODE *subs) /* must be a STRING */ char *cp = subs->stptr, *cpend, *ptr; + char save; size_t len = subs->stlen; if (len == 0 || (! isdigit((unsigned char) *cp) && *cp != '-')) @@ -151,9 +152,12 @@ is_integer(NODE *symbol, NODE *subs) } cpend = cp + len; + save = *cpend; + *cpend = '\0'; errno = 0; l = strtol(cp, & ptr, 10); + *cpend = save; if (errno != 0 || ptr != cpend) return NULL; -- cgit v1.2.3 From cc04afb329cea035d0d9b67cd3b677e06b2f3996 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sat, 12 Nov 2016 19:12:13 +0200 Subject: Further code improvements and doc changes as diff until merge. --- int_array.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'int_array.c') diff --git a/int_array.c b/int_array.c index 0014a81f..992da4a6 100644 --- a/int_array.c +++ b/int_array.c @@ -183,8 +183,8 @@ is_integer(NODE *symbol, NODE *subs) return NULL; if (len == 1 && *cp != '-') { /* single digit */ subs->numbr = (long) (*cp - '0'); - if ((subs->flags & MAYBE_NUM) != 0) { - /* leave MAYBE_NUM set */ + if ((subs->flags & USER_INPUT) != 0) { + /* leave USER_INPUT set */ subs->flags &= ~STRING; subs->flags |= NUMBER; } @@ -203,8 +203,8 @@ is_integer(NODE *symbol, NODE *subs) return NULL; subs->numbr = l; - if ((subs->flags & MAYBE_NUM) != 0) { - /* leave MAYBE_NUM set */ + if ((subs->flags & USER_INPUT) != 0) { + /* leave USER_INPUT set */ subs->flags &= ~STRING; subs->flags |= NUMBER; } -- cgit v1.2.3