Karsten Hopp f88e37
To: vim_dev@googlegroups.com
Karsten Hopp f88e37
Subject: Patch 7.4.704
Karsten Hopp f88e37
Fcc: outbox
Karsten Hopp f88e37
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp f88e37
Mime-Version: 1.0
Karsten Hopp f88e37
Content-Type: text/plain; charset=UTF-8
Karsten Hopp f88e37
Content-Transfer-Encoding: 8bit
Karsten Hopp f88e37
------------
Karsten Hopp f88e37
Karsten Hopp f88e37
Patch 7.4.704
Karsten Hopp f88e37
Problem:    Searching for a character matches an illegal byte and causes
Karsten Hopp f88e37
            invalid memory access. (Dominique Pelle)
Karsten Hopp f88e37
Solution:   Do not match an invalid byte when search for a character in a
Karsten Hopp f88e37
            string.  Fix equivalence classes using negative numbers, which
Karsten Hopp f88e37
            result in illegal bytes.
Karsten Hopp f88e37
Files:      src/misc2.c, src/regexp.c, src/testdir/test44.in
Karsten Hopp f88e37
Karsten Hopp f88e37
Karsten Hopp f88e37
*** ../vim-7.4.703/src/misc2.c	2015-03-05 13:35:52.421943998 +0100
Karsten Hopp f88e37
--- src/misc2.c	2015-04-21 13:52:44.635812675 +0200
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1885,1893 ****
Karsten Hopp f88e37
      {
Karsten Hopp f88e37
  	while (*p != NUL)
Karsten Hopp f88e37
  	{
Karsten Hopp f88e37
! 	    if (utf_ptr2char(p) == c)
Karsten Hopp f88e37
  		return p;
Karsten Hopp f88e37
! 	    p += (*mb_ptr2len)(p);
Karsten Hopp f88e37
  	}
Karsten Hopp f88e37
  	return NULL;
Karsten Hopp f88e37
      }
Karsten Hopp f88e37
--- 1885,1896 ----
Karsten Hopp f88e37
      {
Karsten Hopp f88e37
  	while (*p != NUL)
Karsten Hopp f88e37
  	{
Karsten Hopp f88e37
! 	    int l = (*mb_ptr2len)(p);
Karsten Hopp f88e37
! 
Karsten Hopp f88e37
! 	    /* Avoid matching an illegal byte here. */
Karsten Hopp f88e37
! 	    if (utf_ptr2char(p) == c && l > 1)
Karsten Hopp f88e37
  		return p;
Karsten Hopp f88e37
! 	    p += l;
Karsten Hopp f88e37
  	}
Karsten Hopp f88e37
  	return NULL;
Karsten Hopp f88e37
      }
Karsten Hopp f88e37
*** ../vim-7.4.703/src/regexp.c	2015-03-31 14:17:22.004608294 +0200
Karsten Hopp f88e37
--- src/regexp.c	2015-04-21 13:55:32.778050479 +0200
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 845,857 ****
Karsten Hopp f88e37
  #else
Karsten Hopp f88e37
  	switch (c)
Karsten Hopp f88e37
  	{
Karsten Hopp f88e37
! 	    case 'A': case '\300': case '\301': case '\302':
Karsten Hopp f88e37
  	    CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd)
Karsten Hopp f88e37
  	    CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2)
Karsten Hopp f88e37
! 	    case '\303': case '\304': case '\305':
Karsten Hopp f88e37
! 		      regmbc('A'); regmbc('\300'); regmbc('\301');
Karsten Hopp f88e37
! 		      regmbc('\302'); regmbc('\303'); regmbc('\304');
Karsten Hopp f88e37
! 		      regmbc('\305');
Karsten Hopp f88e37
  		      REGMBC(0x100) REGMBC(0x102) REGMBC(0x104)
Karsten Hopp f88e37
  		      REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0)
Karsten Hopp f88e37
  		      REGMBC(0x1ea2)
Karsten Hopp f88e37
--- 845,858 ----
Karsten Hopp f88e37
  #else
Karsten Hopp f88e37
  	switch (c)
Karsten Hopp f88e37
  	{
Karsten Hopp f88e37
! 	    /* Do not use '\300' style, it results in a negative number. */
Karsten Hopp f88e37
! 	    case 'A': case 0xc0: case 0xc1: case 0xc2:
Karsten Hopp f88e37
! 	    case 0xc3: case 0xc4: case 0xc5:
Karsten Hopp f88e37
  	    CASEMBC(0x100) CASEMBC(0x102) CASEMBC(0x104) CASEMBC(0x1cd)
Karsten Hopp f88e37
  	    CASEMBC(0x1de) CASEMBC(0x1e0) CASEMBC(0x1ea2)
Karsten Hopp f88e37
! 		      regmbc('A'); regmbc(0xc0); regmbc(0xc1);
Karsten Hopp f88e37
! 		      regmbc(0xc2); regmbc(0xc3); regmbc(0xc4);
Karsten Hopp f88e37
! 		      regmbc(0xc5);
Karsten Hopp f88e37
  		      REGMBC(0x100) REGMBC(0x102) REGMBC(0x104)
Karsten Hopp f88e37
  		      REGMBC(0x1cd) REGMBC(0x1de) REGMBC(0x1e0)
Karsten Hopp f88e37
  		      REGMBC(0x1ea2)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 859,867 ****
Karsten Hopp f88e37
  	    case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06)
Karsten Hopp f88e37
  		      regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'C': case '\307':
Karsten Hopp f88e37
  	    CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c)
Karsten Hopp f88e37
! 		      regmbc('C'); regmbc('\307');
Karsten Hopp f88e37
  		      REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a)
Karsten Hopp f88e37
  		      REGMBC(0x10c)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
--- 860,868 ----
Karsten Hopp f88e37
  	    case 'B': CASEMBC(0x1e02) CASEMBC(0x1e06)
Karsten Hopp f88e37
  		      regmbc('B'); REGMBC(0x1e02) REGMBC(0x1e06)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'C': case 0xc7:
Karsten Hopp f88e37
  	    CASEMBC(0x106) CASEMBC(0x108) CASEMBC(0x10a) CASEMBC(0x10c)
Karsten Hopp f88e37
! 		      regmbc('C'); regmbc(0xc7);
Karsten Hopp f88e37
  		      REGMBC(0x106) REGMBC(0x108) REGMBC(0x10a)
Karsten Hopp f88e37
  		      REGMBC(0x10c)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 870,880 ****
Karsten Hopp f88e37
  		      regmbc('D'); REGMBC(0x10e) REGMBC(0x110)
Karsten Hopp f88e37
  		      REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'E': case '\310': case '\311': case '\312': case '\313':
Karsten Hopp f88e37
  	    CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118)
Karsten Hopp f88e37
  	    CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc)
Karsten Hopp f88e37
! 		      regmbc('E'); regmbc('\310'); regmbc('\311');
Karsten Hopp f88e37
! 		      regmbc('\312'); regmbc('\313');
Karsten Hopp f88e37
  		      REGMBC(0x112) REGMBC(0x114) REGMBC(0x116)
Karsten Hopp f88e37
  		      REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba)
Karsten Hopp f88e37
  		      REGMBC(0x1ebc)
Karsten Hopp f88e37
--- 871,881 ----
Karsten Hopp f88e37
  		      regmbc('D'); REGMBC(0x10e) REGMBC(0x110)
Karsten Hopp f88e37
  		      REGMBC(0x1e0a) REGMBC(0x1e0e) REGMBC(0x1e10)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'E': case 0xc8: case 0xc9: case 0xca: case 0xcb:
Karsten Hopp f88e37
  	    CASEMBC(0x112) CASEMBC(0x114) CASEMBC(0x116) CASEMBC(0x118)
Karsten Hopp f88e37
  	    CASEMBC(0x11a) CASEMBC(0x1eba) CASEMBC(0x1ebc)
Karsten Hopp f88e37
! 		      regmbc('E'); regmbc(0xc8); regmbc(0xc9);
Karsten Hopp f88e37
! 		      regmbc(0xca); regmbc(0xcb);
Karsten Hopp f88e37
  		      REGMBC(0x112) REGMBC(0x114) REGMBC(0x116)
Karsten Hopp f88e37
  		      REGMBC(0x118) REGMBC(0x11a) REGMBC(0x1eba)
Karsten Hopp f88e37
  		      REGMBC(0x1ebc)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 894,904 ****
Karsten Hopp f88e37
  		      regmbc('H'); REGMBC(0x124) REGMBC(0x126)
Karsten Hopp f88e37
  		      REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'I': case '\314': case '\315': case '\316': case '\317':
Karsten Hopp f88e37
  	    CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e)
Karsten Hopp f88e37
  	    CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8)
Karsten Hopp f88e37
! 		      regmbc('I'); regmbc('\314'); regmbc('\315');
Karsten Hopp f88e37
! 		      regmbc('\316'); regmbc('\317');
Karsten Hopp f88e37
  		      REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c)
Karsten Hopp f88e37
  		      REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf)
Karsten Hopp f88e37
  		      REGMBC(0x1ec8)
Karsten Hopp f88e37
--- 895,905 ----
Karsten Hopp f88e37
  		      regmbc('H'); REGMBC(0x124) REGMBC(0x126)
Karsten Hopp f88e37
  		      REGMBC(0x1e22) REGMBC(0x1e26) REGMBC(0x1e28)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'I': case 0xcc: case 0xcd: case 0xce: case 0xcf:
Karsten Hopp f88e37
  	    CASEMBC(0x128) CASEMBC(0x12a) CASEMBC(0x12c) CASEMBC(0x12e)
Karsten Hopp f88e37
  	    CASEMBC(0x130) CASEMBC(0x1cf) CASEMBC(0x1ec8)
Karsten Hopp f88e37
! 		      regmbc('I'); regmbc(0xcc); regmbc(0xcd);
Karsten Hopp f88e37
! 		      regmbc(0xce); regmbc(0xcf);
Karsten Hopp f88e37
  		      REGMBC(0x128) REGMBC(0x12a) REGMBC(0x12c)
Karsten Hopp f88e37
  		      REGMBC(0x12e) REGMBC(0x130) REGMBC(0x1cf)
Karsten Hopp f88e37
  		      REGMBC(0x1ec8)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 920,939 ****
Karsten Hopp f88e37
  	    case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40)
Karsten Hopp f88e37
  		      regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'N': case '\321':
Karsten Hopp f88e37
  	    CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44)
Karsten Hopp f88e37
  	    CASEMBC(0x1e48)
Karsten Hopp f88e37
! 		      regmbc('N'); regmbc('\321');
Karsten Hopp f88e37
  		      REGMBC(0x143) REGMBC(0x145) REGMBC(0x147)
Karsten Hopp f88e37
  		      REGMBC(0x1e44) REGMBC(0x1e48)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'O': case '\322': case '\323': case '\324': case '\325':
Karsten Hopp f88e37
! 	    case '\326': case '\330':
Karsten Hopp f88e37
  	    CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0)
Karsten Hopp f88e37
  	    CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece)
Karsten Hopp f88e37
! 		      regmbc('O'); regmbc('\322'); regmbc('\323');
Karsten Hopp f88e37
! 		      regmbc('\324'); regmbc('\325'); regmbc('\326');
Karsten Hopp f88e37
! 		      regmbc('\330');
Karsten Hopp f88e37
  		      REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150)
Karsten Hopp f88e37
  		      REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea)
Karsten Hopp f88e37
  		      REGMBC(0x1ec) REGMBC(0x1ece)
Karsten Hopp f88e37
--- 921,940 ----
Karsten Hopp f88e37
  	    case 'M': CASEMBC(0x1e3e) CASEMBC(0x1e40)
Karsten Hopp f88e37
  		      regmbc('M'); REGMBC(0x1e3e) REGMBC(0x1e40)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'N': case 0xd1:
Karsten Hopp f88e37
  	    CASEMBC(0x143) CASEMBC(0x145) CASEMBC(0x147) CASEMBC(0x1e44)
Karsten Hopp f88e37
  	    CASEMBC(0x1e48)
Karsten Hopp f88e37
! 		      regmbc('N'); regmbc(0xd1);
Karsten Hopp f88e37
  		      REGMBC(0x143) REGMBC(0x145) REGMBC(0x147)
Karsten Hopp f88e37
  		      REGMBC(0x1e44) REGMBC(0x1e48)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'O': case 0xd2: case 0xd3: case 0xd4: case 0xd5:
Karsten Hopp f88e37
! 	    case 0xd6: case 0xd8:
Karsten Hopp f88e37
  	    CASEMBC(0x14c) CASEMBC(0x14e) CASEMBC(0x150) CASEMBC(0x1a0)
Karsten Hopp f88e37
  	    CASEMBC(0x1d1) CASEMBC(0x1ea) CASEMBC(0x1ec) CASEMBC(0x1ece)
Karsten Hopp f88e37
! 		      regmbc('O'); regmbc(0xd2); regmbc(0xd3);
Karsten Hopp f88e37
! 		      regmbc(0xd4); regmbc(0xd5); regmbc(0xd6);
Karsten Hopp f88e37
! 		      regmbc(0xd8);
Karsten Hopp f88e37
  		      REGMBC(0x14c) REGMBC(0x14e) REGMBC(0x150)
Karsten Hopp f88e37
  		      REGMBC(0x1a0) REGMBC(0x1d1) REGMBC(0x1ea)
Karsten Hopp f88e37
  		      REGMBC(0x1ec) REGMBC(0x1ece)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 956,967 ****
Karsten Hopp f88e37
  		      regmbc('T'); REGMBC(0x162) REGMBC(0x164)
Karsten Hopp f88e37
  		      REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'U': case '\331': case '\332': case '\333': case '\334':
Karsten Hopp f88e37
  	    CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e)
Karsten Hopp f88e37
  	    CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3)
Karsten Hopp f88e37
  	    CASEMBC(0x1ee6)
Karsten Hopp f88e37
! 		      regmbc('U'); regmbc('\331'); regmbc('\332');
Karsten Hopp f88e37
! 		      regmbc('\333'); regmbc('\334');
Karsten Hopp f88e37
  		      REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c)
Karsten Hopp f88e37
  		      REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172)
Karsten Hopp f88e37
  		      REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6)
Karsten Hopp f88e37
--- 957,968 ----
Karsten Hopp f88e37
  		      regmbc('T'); REGMBC(0x162) REGMBC(0x164)
Karsten Hopp f88e37
  		      REGMBC(0x166) REGMBC(0x1e6a) REGMBC(0x1e6e)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'U': case 0xd9: case 0xda: case 0xdb: case 0xdc:
Karsten Hopp f88e37
  	    CASEMBC(0x168) CASEMBC(0x16a) CASEMBC(0x16c) CASEMBC(0x16e)
Karsten Hopp f88e37
  	    CASEMBC(0x170) CASEMBC(0x172) CASEMBC(0x1af) CASEMBC(0x1d3)
Karsten Hopp f88e37
  	    CASEMBC(0x1ee6)
Karsten Hopp f88e37
! 		      regmbc('U'); regmbc(0xd9); regmbc(0xda);
Karsten Hopp f88e37
! 		      regmbc(0xdb); regmbc(0xdc);
Karsten Hopp f88e37
  		      REGMBC(0x168) REGMBC(0x16a) REGMBC(0x16c)
Karsten Hopp f88e37
  		      REGMBC(0x16e) REGMBC(0x170) REGMBC(0x172)
Karsten Hopp f88e37
  		      REGMBC(0x1af) REGMBC(0x1d3) REGMBC(0x1ee6)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 977,986 ****
Karsten Hopp f88e37
  	    case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c)
Karsten Hopp f88e37
  		      regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'Y': case '\335':
Karsten Hopp f88e37
  	    CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2)
Karsten Hopp f88e37
  	    CASEMBC(0x1ef6) CASEMBC(0x1ef8)
Karsten Hopp f88e37
! 		      regmbc('Y'); regmbc('\335');
Karsten Hopp f88e37
  		      REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e)
Karsten Hopp f88e37
  		      REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
--- 978,987 ----
Karsten Hopp f88e37
  	    case 'X': CASEMBC(0x1e8a) CASEMBC(0x1e8c)
Karsten Hopp f88e37
  		      regmbc('X'); REGMBC(0x1e8a) REGMBC(0x1e8c)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'Y': case 0xdd:
Karsten Hopp f88e37
  	    CASEMBC(0x176) CASEMBC(0x178) CASEMBC(0x1e8e) CASEMBC(0x1ef2)
Karsten Hopp f88e37
  	    CASEMBC(0x1ef6) CASEMBC(0x1ef8)
Karsten Hopp f88e37
! 		      regmbc('Y'); regmbc(0xdd);
Karsten Hopp f88e37
  		      REGMBC(0x176) REGMBC(0x178) REGMBC(0x1e8e)
Karsten Hopp f88e37
  		      REGMBC(0x1ef2) REGMBC(0x1ef6) REGMBC(0x1ef8)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 990,1002 ****
Karsten Hopp f88e37
  		      REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90)
Karsten Hopp f88e37
  		      REGMBC(0x1e94)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'a': case '\340': case '\341': case '\342':
Karsten Hopp f88e37
! 	    case '\343': case '\344': case '\345':
Karsten Hopp f88e37
  	    CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce)
Karsten Hopp f88e37
  	    CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3)
Karsten Hopp f88e37
! 		      regmbc('a'); regmbc('\340'); regmbc('\341');
Karsten Hopp f88e37
! 		      regmbc('\342'); regmbc('\343'); regmbc('\344');
Karsten Hopp f88e37
! 		      regmbc('\345');
Karsten Hopp f88e37
  		      REGMBC(0x101) REGMBC(0x103) REGMBC(0x105)
Karsten Hopp f88e37
  		      REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1)
Karsten Hopp f88e37
  		      REGMBC(0x1ea3)
Karsten Hopp f88e37
--- 991,1003 ----
Karsten Hopp f88e37
  		      REGMBC(0x17d) REGMBC(0x1b5) REGMBC(0x1e90)
Karsten Hopp f88e37
  		      REGMBC(0x1e94)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'a': case 0xe0: case 0xe1: case 0xe2:
Karsten Hopp f88e37
! 	    case 0xe3: case 0xe4: case 0xe5:
Karsten Hopp f88e37
  	    CASEMBC(0x101) CASEMBC(0x103) CASEMBC(0x105) CASEMBC(0x1ce)
Karsten Hopp f88e37
  	    CASEMBC(0x1df) CASEMBC(0x1e1) CASEMBC(0x1ea3)
Karsten Hopp f88e37
! 		      regmbc('a'); regmbc(0xe0); regmbc(0xe1);
Karsten Hopp f88e37
! 		      regmbc(0xe2); regmbc(0xe3); regmbc(0xe4);
Karsten Hopp f88e37
! 		      regmbc(0xe5);
Karsten Hopp f88e37
  		      REGMBC(0x101) REGMBC(0x103) REGMBC(0x105)
Karsten Hopp f88e37
  		      REGMBC(0x1ce) REGMBC(0x1df) REGMBC(0x1e1)
Karsten Hopp f88e37
  		      REGMBC(0x1ea3)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1004,1012 ****
Karsten Hopp f88e37
  	    case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07)
Karsten Hopp f88e37
  		      regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'c': case '\347':
Karsten Hopp f88e37
  	    CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d)
Karsten Hopp f88e37
! 		      regmbc('c'); regmbc('\347');
Karsten Hopp f88e37
  		      REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b)
Karsten Hopp f88e37
  		      REGMBC(0x10d)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
--- 1005,1013 ----
Karsten Hopp f88e37
  	    case 'b': CASEMBC(0x1e03) CASEMBC(0x1e07)
Karsten Hopp f88e37
  		      regmbc('b'); REGMBC(0x1e03) REGMBC(0x1e07)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'c': case 0xe7:
Karsten Hopp f88e37
  	    CASEMBC(0x107) CASEMBC(0x109) CASEMBC(0x10b) CASEMBC(0x10d)
Karsten Hopp f88e37
! 		      regmbc('c'); regmbc(0xe7);
Karsten Hopp f88e37
  		      REGMBC(0x107) REGMBC(0x109) REGMBC(0x10b)
Karsten Hopp f88e37
  		      REGMBC(0x10d)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1015,1025 ****
Karsten Hopp f88e37
  		      regmbc('d'); REGMBC(0x10f) REGMBC(0x111)
Karsten Hopp f88e37
  		      REGMBC(0x1e0b) REGMBC(0x01e0f) REGMBC(0x1e11)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'e': case '\350': case '\351': case '\352': case '\353':
Karsten Hopp f88e37
  	    CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119)
Karsten Hopp f88e37
  	    CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd)
Karsten Hopp f88e37
! 		      regmbc('e'); regmbc('\350'); regmbc('\351');
Karsten Hopp f88e37
! 		      regmbc('\352'); regmbc('\353');
Karsten Hopp f88e37
  		      REGMBC(0x113) REGMBC(0x115) REGMBC(0x117)
Karsten Hopp f88e37
  		      REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb)
Karsten Hopp f88e37
  		      REGMBC(0x1ebd)
Karsten Hopp f88e37
--- 1016,1026 ----
Karsten Hopp f88e37
  		      regmbc('d'); REGMBC(0x10f) REGMBC(0x111)
Karsten Hopp f88e37
  		      REGMBC(0x1e0b) REGMBC(0x01e0f) REGMBC(0x1e11)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'e': case 0xe8: case 0xe9: case 0xea: case 0xeb:
Karsten Hopp f88e37
  	    CASEMBC(0x113) CASEMBC(0x115) CASEMBC(0x117) CASEMBC(0x119)
Karsten Hopp f88e37
  	    CASEMBC(0x11b) CASEMBC(0x1ebb) CASEMBC(0x1ebd)
Karsten Hopp f88e37
! 		      regmbc('e'); regmbc(0xe8); regmbc(0xe9);
Karsten Hopp f88e37
! 		      regmbc(0xea); regmbc(0xeb);
Karsten Hopp f88e37
  		      REGMBC(0x113) REGMBC(0x115) REGMBC(0x117)
Karsten Hopp f88e37
  		      REGMBC(0x119) REGMBC(0x11b) REGMBC(0x1ebb)
Karsten Hopp f88e37
  		      REGMBC(0x1ebd)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1040,1050 ****
Karsten Hopp f88e37
  		      REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29)
Karsten Hopp f88e37
  		      REGMBC(0x1e96)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'i': case '\354': case '\355': case '\356': case '\357':
Karsten Hopp f88e37
  	    CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f)
Karsten Hopp f88e37
  	    CASEMBC(0x1d0) CASEMBC(0x1ec9)
Karsten Hopp f88e37
! 		      regmbc('i'); regmbc('\354'); regmbc('\355');
Karsten Hopp f88e37
! 		      regmbc('\356'); regmbc('\357');
Karsten Hopp f88e37
  		      REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d)
Karsten Hopp f88e37
  		      REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
--- 1041,1051 ----
Karsten Hopp f88e37
  		      REGMBC(0x1e23) REGMBC(0x1e27) REGMBC(0x1e29)
Karsten Hopp f88e37
  		      REGMBC(0x1e96)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'i': case 0xec: case 0xed: case 0xee: case 0xef:
Karsten Hopp f88e37
  	    CASEMBC(0x129) CASEMBC(0x12b) CASEMBC(0x12d) CASEMBC(0x12f)
Karsten Hopp f88e37
  	    CASEMBC(0x1d0) CASEMBC(0x1ec9)
Karsten Hopp f88e37
! 		      regmbc('i'); regmbc(0xec); regmbc(0xed);
Karsten Hopp f88e37
! 		      regmbc(0xee); regmbc(0xef);
Karsten Hopp f88e37
  		      REGMBC(0x129) REGMBC(0x12b) REGMBC(0x12d)
Karsten Hopp f88e37
  		      REGMBC(0x12f) REGMBC(0x1d0) REGMBC(0x1ec9)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1065,1084 ****
Karsten Hopp f88e37
  	    case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41)
Karsten Hopp f88e37
  		      regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'n': case '\361':
Karsten Hopp f88e37
  	    CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149)
Karsten Hopp f88e37
  	    CASEMBC(0x1e45) CASEMBC(0x1e49)
Karsten Hopp f88e37
! 		      regmbc('n'); regmbc('\361');
Karsten Hopp f88e37
  		      REGMBC(0x144) REGMBC(0x146) REGMBC(0x148)
Karsten Hopp f88e37
  		      REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'o': case '\362': case '\363': case '\364': case '\365':
Karsten Hopp f88e37
! 	    case '\366': case '\370':
Karsten Hopp f88e37
  	    CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1)
Karsten Hopp f88e37
  	    CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf)
Karsten Hopp f88e37
! 		      regmbc('o'); regmbc('\362'); regmbc('\363');
Karsten Hopp f88e37
! 		      regmbc('\364'); regmbc('\365'); regmbc('\366');
Karsten Hopp f88e37
! 		      regmbc('\370');
Karsten Hopp f88e37
  		      REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151)
Karsten Hopp f88e37
  		      REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb)
Karsten Hopp f88e37
  		      REGMBC(0x1ed) REGMBC(0x1ecf)
Karsten Hopp f88e37
--- 1066,1085 ----
Karsten Hopp f88e37
  	    case 'm': CASEMBC(0x1e3f) CASEMBC(0x1e41)
Karsten Hopp f88e37
  		      regmbc('m'); REGMBC(0x1e3f) REGMBC(0x1e41)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'n': case 0xf1:
Karsten Hopp f88e37
  	    CASEMBC(0x144) CASEMBC(0x146) CASEMBC(0x148) CASEMBC(0x149)
Karsten Hopp f88e37
  	    CASEMBC(0x1e45) CASEMBC(0x1e49)
Karsten Hopp f88e37
! 		      regmbc('n'); regmbc(0xf1);
Karsten Hopp f88e37
  		      REGMBC(0x144) REGMBC(0x146) REGMBC(0x148)
Karsten Hopp f88e37
  		      REGMBC(0x149) REGMBC(0x1e45) REGMBC(0x1e49)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'o': case 0xf2: case 0xf3: case 0xf4: case 0xf5:
Karsten Hopp f88e37
! 	    case 0xf6: case 0xf8:
Karsten Hopp f88e37
  	    CASEMBC(0x14d) CASEMBC(0x14f) CASEMBC(0x151) CASEMBC(0x1a1)
Karsten Hopp f88e37
  	    CASEMBC(0x1d2) CASEMBC(0x1eb) CASEMBC(0x1ed) CASEMBC(0x1ecf)
Karsten Hopp f88e37
! 		      regmbc('o'); regmbc(0xf2); regmbc(0xf3);
Karsten Hopp f88e37
! 		      regmbc(0xf4); regmbc(0xf5); regmbc(0xf6);
Karsten Hopp f88e37
! 		      regmbc(0xf8);
Karsten Hopp f88e37
  		      REGMBC(0x14d) REGMBC(0x14f) REGMBC(0x151)
Karsten Hopp f88e37
  		      REGMBC(0x1a1) REGMBC(0x1d2) REGMBC(0x1eb)
Karsten Hopp f88e37
  		      REGMBC(0x1ed) REGMBC(0x1ecf)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1101,1112 ****
Karsten Hopp f88e37
  		      regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167)
Karsten Hopp f88e37
  		      REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'u': case '\371': case '\372': case '\373': case '\374':
Karsten Hopp f88e37
  	    CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f)
Karsten Hopp f88e37
  	    CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4)
Karsten Hopp f88e37
  	    CASEMBC(0x1ee7)
Karsten Hopp f88e37
! 		      regmbc('u'); regmbc('\371'); regmbc('\372');
Karsten Hopp f88e37
! 		      regmbc('\373'); regmbc('\374');
Karsten Hopp f88e37
  		      REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d)
Karsten Hopp f88e37
  		      REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173)
Karsten Hopp f88e37
  		      REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7)
Karsten Hopp f88e37
--- 1102,1113 ----
Karsten Hopp f88e37
  		      regmbc('t'); REGMBC(0x163) REGMBC(0x165) REGMBC(0x167)
Karsten Hopp f88e37
  		      REGMBC(0x1e6b) REGMBC(0x1e6f) REGMBC(0x1e97)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'u': case 0xf9: case 0xfa: case 0xfb: case 0xfc:
Karsten Hopp f88e37
  	    CASEMBC(0x169) CASEMBC(0x16b) CASEMBC(0x16d) CASEMBC(0x16f)
Karsten Hopp f88e37
  	    CASEMBC(0x171) CASEMBC(0x173) CASEMBC(0x1b0) CASEMBC(0x1d4)
Karsten Hopp f88e37
  	    CASEMBC(0x1ee7)
Karsten Hopp f88e37
! 		      regmbc('u'); regmbc(0xf9); regmbc(0xfa);
Karsten Hopp f88e37
! 		      regmbc(0xfb); regmbc(0xfc);
Karsten Hopp f88e37
  		      REGMBC(0x169) REGMBC(0x16b) REGMBC(0x16d)
Karsten Hopp f88e37
  		      REGMBC(0x16f) REGMBC(0x171) REGMBC(0x173)
Karsten Hopp f88e37
  		      REGMBC(0x1b0) REGMBC(0x1d4) REGMBC(0x1ee7)
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 1123,1132 ****
Karsten Hopp f88e37
  	    case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d)
Karsten Hopp f88e37
  		      regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'y': case '\375': case '\377':
Karsten Hopp f88e37
  	    CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99)
Karsten Hopp f88e37
  	    CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9)
Karsten Hopp f88e37
! 		      regmbc('y'); regmbc('\375'); regmbc('\377');
Karsten Hopp f88e37
  		      REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99)
Karsten Hopp f88e37
  		      REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
--- 1124,1133 ----
Karsten Hopp f88e37
  	    case 'x': CASEMBC(0x1e8b) CASEMBC(0x1e8d)
Karsten Hopp f88e37
  		      regmbc('x'); REGMBC(0x1e8b) REGMBC(0x1e8d)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
! 	    case 'y': case 0xfd: case 0xff:
Karsten Hopp f88e37
  	    CASEMBC(0x177) CASEMBC(0x1e8f) CASEMBC(0x1e99)
Karsten Hopp f88e37
  	    CASEMBC(0x1ef3) CASEMBC(0x1ef7) CASEMBC(0x1ef9)
Karsten Hopp f88e37
! 		      regmbc('y'); regmbc(0xfd); regmbc(0xff);
Karsten Hopp f88e37
  		      REGMBC(0x177) REGMBC(0x1e8f) REGMBC(0x1e99)
Karsten Hopp f88e37
  		      REGMBC(0x1ef3) REGMBC(0x1ef7) REGMBC(0x1ef9)
Karsten Hopp f88e37
  		      return;
Karsten Hopp f88e37
*** ../vim-7.4.703/src/testdir/test44.in	2015-02-17 15:43:52.800426905 +0100
Karsten Hopp f88e37
--- src/testdir/test44.in	2015-04-21 12:59:55.712997929 +0200
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 24,40 ****
Karsten Hopp f88e37
  x:" find word by change of word class
Karsten Hopp f88e37
  /ち\<カヨ\>は
Karsten Hopp f88e37
  x:" Test \%u, [\u] and friends
Karsten Hopp f88e37
  /\%u20ac
Karsten Hopp f88e37
! x/[\u4f7f\u5929]\+
Karsten Hopp f88e37
! x/\%U12345678
Karsten Hopp f88e37
! x/[\U1234abcd\u1234\uabcd]
Karsten Hopp f88e37
! x/\%d21879b
Karsten Hopp f88e37
! x/ [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
Karsten Hopp f88e37
! x/ [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
Karsten Hopp f88e37
! x:" Test backwards search from a multi-byte char
Karsten Hopp f88e37
  /x
Karsten Hopp f88e37
  x?.
Karsten Hopp f88e37
! x:let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g'
Karsten Hopp f88e37
  :@w
Karsten Hopp f88e37
  :?^1?,$w! test.out
Karsten Hopp f88e37
  :e! test.out
Karsten Hopp f88e37
--- 24,48 ----
Karsten Hopp f88e37
  x:" find word by change of word class
Karsten Hopp f88e37
  /ち\<カヨ\>は
Karsten Hopp f88e37
  x:" Test \%u, [\u] and friends
Karsten Hopp f88e37
+ :" c
Karsten Hopp f88e37
  /\%u20ac
Karsten Hopp f88e37
! x:" d
Karsten Hopp f88e37
! /[\u4f7f\u5929]\+
Karsten Hopp f88e37
! x:" e
Karsten Hopp f88e37
! /\%U12345678
Karsten Hopp f88e37
! x:" f
Karsten Hopp f88e37
! /[\U1234abcd\u1234\uabcd]
Karsten Hopp f88e37
! x:" g
Karsten Hopp f88e37
! /\%d21879b
Karsten Hopp f88e37
! x:" h
Karsten Hopp f88e37
! / [[=A=]]* [[=B=]]* [[=C=]]* [[=D=]]* [[=E=]]* [[=F=]]* [[=G=]]* [[=H=]]* [[=I=]]* [[=J=]]* [[=K=]]* [[=L=]]* [[=M=]]* [[=N=]]* [[=O=]]* [[=P=]]* [[=Q=]]* [[=R=]]* [[=S=]]* [[=T=]]* [[=U=]]* [[=V=]]* [[=W=]]* [[=X=]]* [[=Y=]]* [[=Z=]]*/e
Karsten Hopp f88e37
! x:" i
Karsten Hopp f88e37
! / [[=a=]]* [[=b=]]* [[=c=]]* [[=d=]]* [[=e=]]* [[=f=]]* [[=g=]]* [[=h=]]* [[=i=]]* [[=j=]]* [[=k=]]* [[=l=]]* [[=m=]]* [[=n=]]* [[=o=]]* [[=p=]]* [[=q=]]* [[=r=]]* [[=s=]]* [[=t=]]* [[=u=]]* [[=v=]]* [[=w=]]* [[=x=]]* [[=y=]]* [[=z=]]*/e
Karsten Hopp f88e37
! x:" j Test backwards search from a multi-byte char
Karsten Hopp f88e37
  /x
Karsten Hopp f88e37
  x?.
Karsten Hopp f88e37
! x:" k
Karsten Hopp f88e37
! :let @w=':%s#comb[i]nations#œ̄ṣ́m̥̄ᾱ̆́#g'
Karsten Hopp f88e37
  :@w
Karsten Hopp f88e37
  :?^1?,$w! test.out
Karsten Hopp f88e37
  :e! test.out
Karsten Hopp f88e37
*** ../vim-7.4.703/src/version.c	2015-04-17 22:08:10.998772925 +0200
Karsten Hopp f88e37
--- src/version.c	2015-04-21 12:32:00.262385422 +0200
Karsten Hopp f88e37
***************
Karsten Hopp f88e37
*** 743,744 ****
Karsten Hopp f88e37
--- 743,746 ----
Karsten Hopp f88e37
  {   /* Add new patch number below this line */
Karsten Hopp f88e37
+ /**/
Karsten Hopp f88e37
+     704,
Karsten Hopp f88e37
  /**/
Karsten Hopp f88e37
Karsten Hopp f88e37
-- 
Karsten Hopp f88e37
Eye have a spelling checker, it came with my PC;
Karsten Hopp f88e37
It plainly marks four my revue mistakes I cannot sea.
Karsten Hopp f88e37
I've run this poem threw it, I'm sure your please to no,
Karsten Hopp f88e37
It's letter perfect in it's weigh, my checker tolled me sew!
Karsten Hopp f88e37
Karsten Hopp f88e37
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp f88e37
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp f88e37
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
Karsten Hopp f88e37
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///