aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2013-09-19 21:50:47 +0300
committerArnold D. Robbins <arnold@skeeve.com>2013-09-19 21:50:47 +0300
commite34e62887348c77be5105fd787fd15754ae83717 (patch)
tree990f8471932dddd21f5b8d42a18ac6b5d0168126
parent2fcffaeee37416708fab505209a55ddd32846463 (diff)
downloadegawk-e34e62887348c77be5105fd787fd15754ae83717.tar.gz
egawk-e34e62887348c77be5105fd787fd15754ae83717.tar.bz2
egawk-e34e62887348c77be5105fd787fd15754ae83717.zip
Sync dfa.c from grep for static checker fix.
-rw-r--r--ChangeLog6
-rw-r--r--dfa.c11
2 files changed, 11 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 84d217da..7f87d21d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-09-19 Arnold D. Robbins <arnold@skeeve.com>
+
+ * dfa.c (parse_bracket_exp): Use code from grep to keep things within
+ range (updates change of 2013-09-08). Fix whitespace in one of the
+ gawk-only additions.
+
2013-09-13 Arnold D. Robbins <arnold@skeeve.com>
Fix use of NF after it's extended, e.g. see test/nfloop.awk.
diff --git a/dfa.c b/dfa.c
index 490a0753..4ba6e44f 100644
--- a/dfa.c
+++ b/dfa.c
@@ -804,7 +804,7 @@ using_utf8 (void)
#endif
#ifdef LIBC_IS_BORKED
if (gawk_mb_cur_max == 1)
- utf8 = 0;
+ utf8 = 0;
#endif
}
@@ -1017,8 +1017,8 @@ parse_bracket_exp (void)
dfa is ever called. */
if (c == '[' && (syntax_bits & RE_CHAR_CLASSES))
{
-#define BRACKET_BUFFER_SIZE 128
- char str[BRACKET_BUFFER_SIZE];
+#define MAX_BRACKET_STRING_LEN 32
+ char str[MAX_BRACKET_STRING_LEN + 1];
FETCH_WC (c1, wc1, _("unbalanced ["));
/* If pattern contains '[[:', '[[.', or '[[='. */
@@ -1032,14 +1032,13 @@ parse_bracket_exp (void)
FETCH_WC (c, wc, _("unbalanced ["));
if ((c == c1 && *lexptr == ']') || lexleft == 0)
break;
- if (len < BRACKET_BUFFER_SIZE)
+ if (len < MAX_BRACKET_STRING_LEN)
str[len++] = c;
else
/* This is in any case an invalid class name. */
str[0] = '\0';
}
- if (len < BRACKET_BUFFER_SIZE)
- str[len] = '\0';
+ str[len] = '\0';
/* Fetch bracket. */
FETCH_WC (c, wc, _("unbalanced ["));