diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2014-10-25 20:15:24 +0300 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2014-10-25 20:15:24 +0300 |
commit | cbecf843696d2574accb198b84d9386eef15341c (patch) | |
tree | 869f5078f9dc528f26ea189e23e7a715a90861a4 | |
parent | 2c84999804e28517cf467a6ed6788aea06e146c0 (diff) | |
download | egawk-cbecf843696d2574accb198b84d9386eef15341c.tar.gz egawk-cbecf843696d2574accb198b84d9386eef15341c.tar.bz2 egawk-cbecf843696d2574accb198b84d9386eef15341c.zip |
Sync dfa.c with grep.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | dfa.c | 33 |
2 files changed, 17 insertions, 22 deletions
@@ -1,3 +1,7 @@ +2014-10-25 Arnold D. Robbins <arnold@skeeve.com> + + * dfa.c: Sync with GNU grep. + 2014-10-17 John E. Malmberg <wb8tyw@qsl.net> * ext.c (close_extensions): Test for null pointer since @@ -32,7 +36,7 @@ 2014-10-08 Arnold D. Robbins <arnold@skeeve.com> - * dfa.c: Sync wit GNU grep. + * dfa.c: Sync with GNU grep. 2014-10-05 Arnold D. Robbins <arnold@skeeve.com> @@ -3082,17 +3082,7 @@ match_mb_charset (struct dfa *d, state_num s, position pos, int context; /* Check syntax bits. */ - if (wc == (wchar_t) eolbyte) - { - if (!(syntax_bits & RE_DOT_NEWLINE)) - return 0; - } - else if (wc == (wchar_t) '\0') - { - if (syntax_bits & RE_DOT_NOT_NULL) - return 0; - } - else if (wc == WEOF) + if (wc == WEOF) return 0; context = wchar_context (wc); @@ -3422,20 +3412,20 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, continue; } - /* Falling back to the glibc matcher in this case gives - better performance (up to 25% better on [a-z], for - example) and enables support for collating symbols and - equivalence classes. */ - if (d->states[s].has_mbcset && backref) - { - *backref = 1; - goto done; - } - /* The following code is used twice. Use a macro to avoid the risk that they diverge. */ #define State_transition() \ do { \ + /* Falling back to the glibc matcher in this case gives \ + better performance (up to 25% better on [a-z], for \ + example) and enables support for collating symbols and \ + equivalence classes. */ \ + if (d->states[s].has_mbcset && backref) \ + { \ + *backref = 1; \ + goto done; \ + } \ + \ /* Can match with a multibyte character (and multi-character \ collating element). Transition table might be updated. */ \ s = transit_state (d, s, &p, (unsigned char *) end); \ @@ -3472,6 +3462,7 @@ dfaexec_main (struct dfa *d, char const *begin, char *end, { while (t[*p] == 0) p++; + s1 = 0; s = t[*p++]; } |