| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.1086 |
| Fcc: outbox |
| From: Bram Moolenaar <Bram@moolenaar.net> |
| Mime-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| |
| Patch 7.3.1086 |
| Problem: Old regexp engine accepts illegal range, new one doesn't. |
| Solution: Also accept the illegal range with the new engine. |
| Files: src/regexp_nfa.c, src/testdir/test64.in, src/testdir/test64.ok |
| |
| |
| |
| |
| |
| *** 1089,1096 **** |
| * while loop. */ |
| } |
| } |
| ! /* Try a range like 'a-x' or '\t-z' */ |
| ! if (*regparse == '-') |
| { |
| emit_range = TRUE; |
| startc = oldstartc; |
| --- 1089,1097 ---- |
| * while loop. */ |
| } |
| } |
| ! /* Try a range like 'a-x' or '\t-z'. Also allows '-' as a |
| ! * start character. */ |
| ! if (*regparse == '-' && oldstartc != -1) |
| { |
| emit_range = TRUE; |
| startc = oldstartc; |
| |
| *** 1140,1155 **** |
| |
| /* Normal printable char */ |
| if (startc == -1) |
| ! #ifdef FEAT_MBYTE |
| ! startc = (*mb_ptr2char)(regparse); |
| ! #else |
| ! startc = *regparse; |
| ! #endif |
| |
| /* Previous char was '-', so this char is end of range. */ |
| if (emit_range) |
| { |
| ! endc = startc; startc = oldstartc; |
| if (startc > endc) |
| EMSG_RET_FAIL(_(e_invrange)); |
| #ifdef FEAT_MBYTE |
| --- 1141,1153 ---- |
| |
| /* Normal printable char */ |
| if (startc == -1) |
| ! startc = PTR2CHAR(regparse); |
| |
| /* Previous char was '-', so this char is end of range. */ |
| if (emit_range) |
| { |
| ! endc = startc; |
| ! startc = oldstartc; |
| if (startc > endc) |
| EMSG_RET_FAIL(_(e_invrange)); |
| #ifdef FEAT_MBYTE |
| |
| *** 1166,1172 **** |
| TRY_NEG(); |
| EMIT_GLUE(); |
| } |
| - emit_range = FALSE; |
| } |
| else |
| #endif |
| --- 1164,1169 ---- |
| |
| *** 1190,1197 **** |
| TRY_NEG(); |
| EMIT_GLUE(); |
| } |
| - emit_range = FALSE; |
| } |
| } |
| else |
| { |
| --- 1187,1195 ---- |
| TRY_NEG(); |
| EMIT_GLUE(); |
| } |
| } |
| + emit_range = FALSE; |
| + startc = -1; |
| } |
| else |
| { |
| |
| |
| |
| *** 270,275 **** |
| --- 270,276 ---- |
| :call add(tl, [2, '\_[0-9]\+', "asfi\n9888u", "\n9888"]) |
| :call add(tl, [2, '\_f', " \na ", "\n"]) |
| :call add(tl, [2, '\_f\+', " \na ", "\na"]) |
| + :call add(tl, [2, '[0-9A-Za-z-_.]\+', " @0_a.A-{ ", "0_a.A-"]) |
| :" |
| :"""" Test start/end of line, start/end of file |
| :call add(tl, [2, '^a.', "a_\nb ", "a_"]) |
| |
| |
| |
| *** 605,610 **** |
| --- 605,613 ---- |
| OK 0 - \_f\+ |
| OK 1 - \_f\+ |
| OK 2 - \_f\+ |
| + OK 0 - [0-9A-Za-z-_.]\+ |
| + OK 1 - [0-9A-Za-z-_.]\+ |
| + OK 2 - [0-9A-Za-z-_.]\+ |
| OK 0 - ^a. |
| OK 1 - ^a. |
| OK 2 - ^a. |
| |
| |
| |
| *** 730,731 **** |
| --- 730,733 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 1086, |
| /**/ |
| |
| -- |
| Micro$oft: where do you want to go today? |
| Linux: where do you want to go tomorrow? |
| FreeBSD: are you guys coming, or what? |
| |
| /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ |
| /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ |
| \\\ an exciting new programming language -- http://www.Zimbu.org /// |
| \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |