From cb1f7a49c210a3a275dad41b90dbcd34e9751d24 Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Dec 17 2013 10:34:51 +0000 Subject: - patchlevel 104 --- diff --git a/7.4.104 b/7.4.104 new file mode 100644 index 0000000..6e51568 --- /dev/null +++ b/7.4.104 @@ -0,0 +1,107 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.4.104 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.4.104 +Problem: ":help s/\_" reports an internal error. (John Beckett) +Solution: Check for NUL and invalid character classes. +Files: src/regexp_nfa.c + + +*** ../vim-7.4.103/src/regexp_nfa.c 2013-11-21 16:03:35.000000000 +0100 +--- src/regexp_nfa.c 2013-11-28 14:05:34.000000000 +0100 +*************** +*** 239,245 **** +--- 239,247 ---- + NFA_UPPER, NFA_NUPPER + }; + ++ static char_u e_nul_found[] = N_("E865: (NFA) Regexp end encountered prematurely"); + static char_u e_misplaced[] = N_("E866: (NFA regexp) Misplaced %c"); ++ static char_u e_ill_char_class[] = N_("E877: (NFA regexp) Invalid character class: %ld"); + + /* NFA regexp \ze operator encountered. */ + static int nfa_has_zend; +*************** +*** 1137,1143 **** + switch (c) + { + case NUL: +! EMSG_RET_FAIL(_("E865: (NFA) Regexp end encountered prematurely")); + + case Magic('^'): + EMIT(NFA_BOL); +--- 1139,1145 ---- + switch (c) + { + case NUL: +! EMSG_RET_FAIL(_(e_nul_found)); + + case Magic('^'): + EMIT(NFA_BOL); +*************** +*** 1160,1165 **** +--- 1162,1170 ---- + + case Magic('_'): + c = no_Magic(getchr()); ++ if (c == NUL) ++ EMSG_RET_FAIL(_(e_nul_found)); ++ + if (c == '^') /* "\_^" is start-of-line */ + { + EMIT(NFA_BOL); +*************** +*** 1216,1221 **** +--- 1221,1232 ---- + p = vim_strchr(classchars, no_Magic(c)); + if (p == NULL) + { ++ if (extra == NFA_ADD_NL) ++ { ++ EMSGN(_(e_ill_char_class), c); ++ rc_did_emsg = TRUE; ++ return FAIL; ++ } + EMSGN("INTERNAL: Unknown character class char: %ld", c); + return FAIL; + } +*************** +*** 4733,4739 **** + + default: + /* should not be here :P */ +! EMSGN("E877: (NFA regexp) Invalid character class: %ld", class); + return FAIL; + } + return FAIL; +--- 4744,4750 ---- + + default: + /* should not be here :P */ +! EMSGN(_(e_ill_char_class), class); + return FAIL; + } + return FAIL; +*** ../vim-7.4.103/src/version.c 2013-11-21 18:13:26.000000000 +0100 +--- src/version.c 2013-11-28 14:06:59.000000000 +0100 +*************** +*** 740,741 **** +--- 740,743 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 104, + /**/ + +-- +Everybody wants to go to heaven, but nobody wants to die. + + /// 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 ///