diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2018-09-18 11:37:02 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2018-09-18 11:37:02 +0300 |
commit | f2230060d3301f83f1223983a8ee942328c6e0c4 (patch) | |
tree | 3354868043859941b7fc5a38cd84a47dcc7f954c | |
parent | a3bfee4ed115a19a968568b9e2abdca2563bfb10 (diff) | |
download | egawk-f2230060d3301f83f1223983a8ee942328c6e0c4.tar.gz egawk-f2230060d3301f83f1223983a8ee942328c6e0c4.tar.bz2 egawk-f2230060d3301f83f1223983a8ee942328c6e0c4.zip |
Improve lint check for accessing fields in END rule.
-rwxr-xr-x | ChangeLog | 7 | ||||
-rw-r--r-- | builtin.c | 3 | ||||
-rw-r--r-- | field.c | 15 |
3 files changed, 17 insertions, 8 deletions
@@ -2,6 +2,13 @@ * NEWS: Fix typo in gettext version. + Unrelated: + + * field.c (get_field): Move lint check for field access in an + END rule to top level, make wording more general. + * builtin.c (do_print_rec): Restore check before calling get_field() + and add do_lint to the condition. + 2018-09-16 gettextize <bug-gnu-gettext@gnu.org> * configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.19.8. @@ -2364,7 +2364,8 @@ do_print_rec(int nargs, int redirtype) if (fp == NULL) return; - (void) get_field(0L, NULL); /* rebuild record if necessary */ + if (! field0_valid || do_lint) // lint check for field access in END + (void) get_field(0L, NULL); f0 = fields_arr[0]; @@ -832,18 +832,19 @@ NODE ** get_field(long requested, Func_ptr *assign) { bool in_middle = false; + static bool warned = false; + extern int currule; + + if (do_lint && currule == END && ! warned) { + warned = true; + lintwarn(_("accessing fields from an END rule may not be portable")); + } + /* * if requesting whole line but some other field has been altered, * then the whole line must be rebuilt */ if (requested == 0) { - static bool warned = false; - extern int currule; - - if (do_lint && currule == END && ! warned) { - warned = true; - lintwarn(_("accessing $0 from an END rule may not be portable")); - } if (! field0_valid) { /* first, parse remainder of input record */ if (NF == -1) { |