- patchlevel 771
This commit is contained in:
		
							parent
							
								
									51da7cddaa
								
							
						
					
					
						commit
						8395f75986
					
				
							
								
								
									
										275
									
								
								7.4.771
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										275
									
								
								7.4.771
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,275 @@ | |||||||
|  | To: vim_dev@googlegroups.com | ||||||
|  | Subject: Patch 7.4.771 | ||||||
|  | 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.4.771 | ||||||
|  | Problem:    Search does not handle multi-byte character at the start position | ||||||
|  |             correctly. | ||||||
|  | Solution:   Take byte size of character into account. (Yukihiro Nakadaira) | ||||||
|  | Files:      src/search.c, src/testdir/Make_amiga.mak, | ||||||
|  |             src/testdir/Make_dos.mak, src/testdir/Make_ming.mak, | ||||||
|  |             src/testdir/Make_os2.mak, src/testdir/Make_vms.mms, | ||||||
|  |             src/testdir/Makefile, src/testdir/test_search_mbyte.in, | ||||||
|  |             src/testdir/test_search_mbyte.ok | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | *** ../vim-7.4.770/src/search.c	2015-03-13 15:02:46.254059251 +0100 | ||||||
|  | --- src/search.c	2015-07-10 14:37:49.055931842 +0200 | ||||||
|  | *************** | ||||||
|  | *** 548,553 **** | ||||||
|  | --- 548,554 ---- | ||||||
|  |       pos_T	start_pos; | ||||||
|  |       int		at_first_line; | ||||||
|  |       int		extra_col; | ||||||
|  | +     int		start_char_len; | ||||||
|  |       int		match_ok; | ||||||
|  |       long	nmatched; | ||||||
|  |       int		submatch = 0; | ||||||
|  | *************** | ||||||
|  | *** 574,596 **** | ||||||
|  |   	/* When not accepting a match at the start position set "extra_col" to | ||||||
|  |   	 * a non-zero value.  Don't do that when starting at MAXCOL, since | ||||||
|  |   	 * MAXCOL + 1 is zero. */ | ||||||
|  | ! 	if ((options & SEARCH_START) || pos->col == MAXCOL) | ||||||
|  | ! 	    extra_col = 0; | ||||||
|  |   #ifdef FEAT_MBYTE | ||||||
|  |   	/* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ | ||||||
|  | ! 	else if (dir != BACKWARD && has_mbyte | ||||||
|  | ! 		     && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count | ||||||
|  | ! 						     && pos->col < MAXCOL - 2) | ||||||
|  |   	{ | ||||||
|  |   	    ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; | ||||||
|  |   	    if (*ptr == NUL) | ||||||
|  | ! 		extra_col = 1; | ||||||
|  |   	    else | ||||||
|  | ! 		extra_col = (*mb_ptr2len)(ptr); | ||||||
|  |   	} | ||||||
|  |   #endif | ||||||
|  |   	else | ||||||
|  | ! 	    extra_col = 1; | ||||||
|  |    | ||||||
|  |   	start_pos = *pos;	/* remember start pos for detecting no match */ | ||||||
|  |   	found = 0;		/* default: not found */ | ||||||
|  | --- 575,611 ---- | ||||||
|  |   	/* When not accepting a match at the start position set "extra_col" to | ||||||
|  |   	 * a non-zero value.  Don't do that when starting at MAXCOL, since | ||||||
|  |   	 * MAXCOL + 1 is zero. */ | ||||||
|  | ! 	if (pos->col == MAXCOL) | ||||||
|  | ! 	    start_char_len = 0; | ||||||
|  |   #ifdef FEAT_MBYTE | ||||||
|  |   	/* Watch out for the "col" being MAXCOL - 2, used in a closed fold. */ | ||||||
|  | ! 	else if (has_mbyte | ||||||
|  | ! 		    && pos->lnum >= 1 && pos->lnum <= buf->b_ml.ml_line_count | ||||||
|  | ! 						    && pos->col < MAXCOL - 2) | ||||||
|  |   	{ | ||||||
|  |   	    ptr = ml_get_buf(buf, pos->lnum, FALSE) + pos->col; | ||||||
|  |   	    if (*ptr == NUL) | ||||||
|  | ! 		start_char_len = 1; | ||||||
|  |   	    else | ||||||
|  | ! 		start_char_len = (*mb_ptr2len)(ptr); | ||||||
|  |   	} | ||||||
|  |   #endif | ||||||
|  |   	else | ||||||
|  | ! 	    start_char_len = 1; | ||||||
|  | ! 	if (dir == FORWARD) | ||||||
|  | ! 	{ | ||||||
|  | ! 	    if (options & SEARCH_START) | ||||||
|  | ! 		extra_col = 0; | ||||||
|  | ! 	    else | ||||||
|  | ! 		extra_col = start_char_len; | ||||||
|  | ! 	} | ||||||
|  | ! 	else | ||||||
|  | ! 	{ | ||||||
|  | ! 	    if (options & SEARCH_START) | ||||||
|  | ! 		extra_col = start_char_len; | ||||||
|  | ! 	    else | ||||||
|  | ! 		extra_col = 0; | ||||||
|  | ! 	} | ||||||
|  |    | ||||||
|  |   	start_pos = *pos;	/* remember start pos for detecting no match */ | ||||||
|  |   	found = 0;		/* default: not found */ | ||||||
|  | *************** | ||||||
|  | *** 779,793 **** | ||||||
|  |   					|| (lnum + regmatch.endpos[0].lnum | ||||||
|  |   							     == start_pos.lnum | ||||||
|  |   					     && (int)regmatch.endpos[0].col - 1 | ||||||
|  | ! 								   + extra_col | ||||||
|  | ! 							<= (int)start_pos.col)) | ||||||
|  |   				    : (lnum + regmatch.startpos[0].lnum | ||||||
|  |   							      < start_pos.lnum | ||||||
|  |   					|| (lnum + regmatch.startpos[0].lnum | ||||||
|  |   							     == start_pos.lnum | ||||||
|  |   					     && (int)regmatch.startpos[0].col | ||||||
|  | ! 								   + extra_col | ||||||
|  | ! 						      <= (int)start_pos.col)))) | ||||||
|  |   			    { | ||||||
|  |   				match_ok = TRUE; | ||||||
|  |   				matchpos = regmatch.startpos[0]; | ||||||
|  | --- 794,808 ---- | ||||||
|  |   					|| (lnum + regmatch.endpos[0].lnum | ||||||
|  |   							     == start_pos.lnum | ||||||
|  |   					     && (int)regmatch.endpos[0].col - 1 | ||||||
|  | ! 							< (int)start_pos.col | ||||||
|  | ! 								+ extra_col)) | ||||||
|  |   				    : (lnum + regmatch.startpos[0].lnum | ||||||
|  |   							      < start_pos.lnum | ||||||
|  |   					|| (lnum + regmatch.startpos[0].lnum | ||||||
|  |   							     == start_pos.lnum | ||||||
|  |   					     && (int)regmatch.startpos[0].col | ||||||
|  | ! 						      < (int)start_pos.col | ||||||
|  | ! 							      + extra_col)))) | ||||||
|  |   			    { | ||||||
|  |   				match_ok = TRUE; | ||||||
|  |   				matchpos = regmatch.startpos[0]; | ||||||
|  | *** ../vim-7.4.770/src/testdir/Make_amiga.mak	2015-06-25 13:57:20.033431073 +0200 | ||||||
|  | --- src/testdir/Make_amiga.mak	2015-07-10 14:36:33.776641084 +0200 | ||||||
|  | *************** | ||||||
|  | *** 57,62 **** | ||||||
|  | --- 57,63 ---- | ||||||
|  |   		test_perl.out \ | ||||||
|  |   		test_qf_title.out \ | ||||||
|  |   		test_ruby.out \ | ||||||
|  | + 		test_search_mbyte.out \ | ||||||
|  |   		test_set.out \ | ||||||
|  |   		test_signs.out \ | ||||||
|  |   		test_textobjects.out \ | ||||||
|  | *************** | ||||||
|  | *** 205,210 **** | ||||||
|  | --- 206,212 ---- | ||||||
|  |   test_perl.out: test_perl.in | ||||||
|  |   test_qf_title.out: test_qf_title.in | ||||||
|  |   test_ruby.out: test_ruby.in | ||||||
|  | + test_search_mbyte.out: test_search_mbyte.in | ||||||
|  |   test_set.out: test_set.in | ||||||
|  |   test_signs.out: test_signs.in | ||||||
|  |   test_textobjects.out: test_textobjects.in | ||||||
|  | *** ../vim-7.4.770/src/testdir/Make_dos.mak	2015-06-25 13:57:20.033431073 +0200 | ||||||
|  | --- src/testdir/Make_dos.mak	2015-07-10 14:36:43.384550582 +0200 | ||||||
|  | *************** | ||||||
|  | *** 56,61 **** | ||||||
|  | --- 56,62 ---- | ||||||
|  |   		test_perl.out \ | ||||||
|  |   		test_qf_title.out \ | ||||||
|  |   		test_ruby.out \ | ||||||
|  | + 		test_search_mbyte.out \ | ||||||
|  |   		test_set.out \ | ||||||
|  |   		test_signs.out \ | ||||||
|  |   		test_textobjects.out \ | ||||||
|  | *** ../vim-7.4.770/src/testdir/Make_ming.mak	2015-06-25 13:57:20.033431073 +0200 | ||||||
|  | --- src/testdir/Make_ming.mak	2015-07-10 14:36:50.716481518 +0200 | ||||||
|  | *************** | ||||||
|  | *** 78,83 **** | ||||||
|  | --- 78,84 ---- | ||||||
|  |   		test_perl.out \ | ||||||
|  |   		test_qf_title.out \ | ||||||
|  |   		test_ruby.out \ | ||||||
|  | + 		test_search_mbyte.out \ | ||||||
|  |   		test_set.out \ | ||||||
|  |   		test_signs.out \ | ||||||
|  |   		test_textobjects.out \ | ||||||
|  | *** ../vim-7.4.770/src/testdir/Make_os2.mak	2015-06-25 13:57:20.033431073 +0200 | ||||||
|  | --- src/testdir/Make_os2.mak	2015-07-10 14:36:52.820461700 +0200 | ||||||
|  | *************** | ||||||
|  | *** 58,63 **** | ||||||
|  | --- 58,64 ---- | ||||||
|  |   		test_perl.out \ | ||||||
|  |   		test_qf_title.out \ | ||||||
|  |   		test_ruby.out \ | ||||||
|  | + 		test_search_mbyte.out \ | ||||||
|  |   		test_set.out \ | ||||||
|  |   		test_signs.out \ | ||||||
|  |   		test_textobjects.out \ | ||||||
|  | *** ../vim-7.4.770/src/testdir/Make_vms.mms	2015-06-25 13:57:20.033431073 +0200 | ||||||
|  | --- src/testdir/Make_vms.mms	2015-07-10 14:36:58.240410647 +0200 | ||||||
|  | *************** | ||||||
|  | *** 4,10 **** | ||||||
|  |   # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com> | ||||||
|  |   #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu> | ||||||
|  |   # | ||||||
|  | ! # Last change:  2015 Jun 19 | ||||||
|  |   # | ||||||
|  |   # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. | ||||||
|  |   # Edit the lines in the Configuration section below to select. | ||||||
|  | --- 4,10 ---- | ||||||
|  |   # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com> | ||||||
|  |   #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu> | ||||||
|  |   # | ||||||
|  | ! # Last change:  2015 Jul 10 | ||||||
|  |   # | ||||||
|  |   # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64. | ||||||
|  |   # Edit the lines in the Configuration section below to select. | ||||||
|  | *************** | ||||||
|  | *** 117,122 **** | ||||||
|  | --- 117,123 ---- | ||||||
|  |   	 test_perl.out \ | ||||||
|  |   	 test_qf_title.out \ | ||||||
|  |   	 test_ruby.out \ | ||||||
|  | + 	 test_search_mbyte.out \ | ||||||
|  |   	 test_set.out \ | ||||||
|  |   	 test_signs.out \ | ||||||
|  |   	 test_textobjects.out \ | ||||||
|  | *** ../vim-7.4.770/src/testdir/Makefile	2015-06-25 13:57:20.033431073 +0200 | ||||||
|  | --- src/testdir/Makefile	2015-07-10 14:37:09.404305492 +0200 | ||||||
|  | *************** | ||||||
|  | *** 54,59 **** | ||||||
|  | --- 54,60 ---- | ||||||
|  |   		test_perl.out \ | ||||||
|  |   		test_qf_title.out \ | ||||||
|  |   		test_ruby.out \ | ||||||
|  | + 		test_search_mbyte.out \ | ||||||
|  |   		test_set.out \ | ||||||
|  |   		test_signs.out \ | ||||||
|  |   		test_textobjects.out \ | ||||||
|  | *** ../vim-7.4.770/src/testdir/test_search_mbyte.in	2015-07-10 14:42:43.513156459 +0200 | ||||||
|  | --- src/testdir/test_search_mbyte.in	2015-07-10 14:33:38.430293025 +0200 | ||||||
|  | *************** | ||||||
|  | *** 0 **** | ||||||
|  | --- 1,15 ---- | ||||||
|  | + Test for search('multi-byte char', 'bce') | ||||||
|  | +  | ||||||
|  | + STARTTEST | ||||||
|  | + :source small.vim | ||||||
|  | + :source mbyte.vim | ||||||
|  | + :set encoding=utf-8 | ||||||
|  | + :/^Test bce:/+1 | ||||||
|  | + :$put =search('A', 'bce', line('.')) | ||||||
|  | + :1;/^Results:/,$wq! test.out | ||||||
|  | + ENDTEST | ||||||
|  | +  | ||||||
|  | + Results: | ||||||
|  | +  | ||||||
|  | + Test bce: | ||||||
|  | + A | ||||||
|  | *** ../vim-7.4.770/src/testdir/test_search_mbyte.ok	2015-07-10 14:42:43.517156422 +0200 | ||||||
|  | --- src/testdir/test_search_mbyte.ok	2015-07-10 14:34:23.409869226 +0200 | ||||||
|  | *************** | ||||||
|  | *** 0 **** | ||||||
|  | --- 1,5 ---- | ||||||
|  | + Results: | ||||||
|  | +  | ||||||
|  | + Test bce: | ||||||
|  | + A | ||||||
|  | + 15 | ||||||
|  | *** ../vim-7.4.770/src/version.c	2015-07-10 14:05:03.930436893 +0200 | ||||||
|  | --- src/version.c	2015-07-10 14:37:46.207958692 +0200 | ||||||
|  | *************** | ||||||
|  | *** 743,744 **** | ||||||
|  | --- 743,746 ---- | ||||||
|  |   {   /* Add new patch number below this line */ | ||||||
|  | + /**/ | ||||||
|  | +     771, | ||||||
|  |   /**/ | ||||||
|  | 
 | ||||||
|  | --  | ||||||
|  | hundred-and-one symptoms of being an internet addict: | ||||||
|  | 197. Your desk collapses under the weight of your computer peripherals. | ||||||
|  | 
 | ||||||
|  |  /// 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    /// | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user