diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2015-04-05 10:51:51 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2015-04-05 10:51:51 +0300 |
commit | dbf9d5a4fc4b6d6340912395f020019576ed37f6 (patch) | |
tree | 4b3540a5be9ec18187647cbdef462558a9cdfef2 | |
parent | f82aa0619d803ebe0dc1710edf1a3e108a4210c8 (diff) | |
parent | e7ee504434e315852ebd449e20d72929de63cfe6 (diff) | |
download | egawk-dbf9d5a4fc4b6d6340912395f020019576ed37f6.tar.gz egawk-dbf9d5a4fc4b6d6340912395f020019576ed37f6.tar.bz2 egawk-dbf9d5a4fc4b6d6340912395f020019576ed37f6.zip |
Merge branch 'gawk-4.1-stable'
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | awkgram.c | 14 | ||||
-rw-r--r-- | awkgram.y | 14 |
3 files changed, 32 insertions, 6 deletions
@@ -1,3 +1,13 @@ +2015-04-05 Arnold D. Robbins <arnold@skeeve.com> + + * awkgram.y (install_builtins): If do_traditional is true, do not + install gawk extensions flagged with GAWKX. Similarly, if do_posix + is true, do not install functions flagged with NOT_POSIX. + This fixes a problem with spurious lint complaints about shadowing + a global variable that is not valid in traditional or posix mode. + Thanks to Andrew Schorr for finding the problem and supplying + initial code; I did it slightly differently. + 2015-04-02 Andrew J. Schorr <aschorr@telemetry-investments.com> * NEWS: Rename div to intdiv. @@ -8234,12 +8234,20 @@ void install_builtins(void) { int i, j; + int flags_that_must_be_clear = DEBUG_USE; + + if (do_traditional) + flags_that_must_be_clear |= GAWKX; + + if (do_posix) + flags_that_must_be_clear |= NOT_POSIX; + j = sizeof(tokentab) / sizeof(tokentab[0]); for (i = 0; i < j; i++) { - if ( (tokentab[i].class == LEX_BUILTIN - || tokentab[i].class == LEX_LENGTH) - && (tokentab[i].flags & DEBUG_USE) == 0) { + if ( (tokentab[i].class == LEX_BUILTIN + || tokentab[i].class == LEX_LENGTH) + && (tokentab[i].flags & flags_that_must_be_clear) == 0) { (void) install_symbol(tokentab[i].operator, Node_builtin_func); } } @@ -5896,12 +5896,20 @@ void install_builtins(void) { int i, j; + int flags_that_must_be_clear = DEBUG_USE; + + if (do_traditional) + flags_that_must_be_clear |= GAWKX; + + if (do_posix) + flags_that_must_be_clear |= NOT_POSIX; + j = sizeof(tokentab) / sizeof(tokentab[0]); for (i = 0; i < j; i++) { - if ( (tokentab[i].class == LEX_BUILTIN - || tokentab[i].class == LEX_LENGTH) - && (tokentab[i].flags & DEBUG_USE) == 0) { + if ( (tokentab[i].class == LEX_BUILTIN + || tokentab[i].class == LEX_LENGTH) + && (tokentab[i].flags & flags_that_must_be_clear) == 0) { (void) install_symbol(tokentab[i].operator, Node_builtin_func); } } |