Skip to content
Permalink
Browse files

patch 8.0.0516: a large count on a normal command causes trouble

Problem:    A large count on a normal command causes trouble. (Dominique
            Pelle)
Solution:   Make "opcount" long.
  • Loading branch information...
brammool committed Mar 29, 2017
1 parent d5d3753 commit b1e04fca3704e272a30afbe062498819eaacd4f9
Showing with 31 additions and 21 deletions.
  1. +2 −2 src/globals.h
  2. +27 −19 src/testdir/test_normal.vim
  3. +2 −0 src/version.c
@@ -932,10 +932,10 @@ EXTERN int State INIT(= NORMAL); /* This is the current state of the
* command interpreter. */

EXTERN int finish_op INIT(= FALSE);/* TRUE while an operator is pending */
EXTERN int opcount INIT(= 0); /* count for pending operator */
EXTERN long opcount INIT(= 0); /* count for pending operator */

/*
* ex mode (Q) state
* Ex mode (Q) state
*/
EXTERN int exmode_active INIT(= 0); /* zero, EXMODE_NORMAL or EXMODE_VIM */
EXTERN int ex_no_reprint INIT(= FALSE); /* no need to print after z or p */
@@ -2259,26 +2259,34 @@ func! Test_normal53_digraph()
bw!
endfunc

func! Test_normal54_Ctrl_bsl()
new
call setline(1, 'abcdefghijklmn')
exe "norm! df\<c-\>\<c-n>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>\<c-g>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>m"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
func Test_normal54_Ctrl_bsl()
new
call setline(1, 'abcdefghijklmn')
exe "norm! df\<c-\>\<c-n>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>\<c-g>"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
exe "norm! df\<c-\>m"
call assert_equal(['abcdefghijklmn'], getline(1,'$'))
if !has("multi_byte")
return
endif
call setline(2, 'abcdefghijklmnāf')
norm! 2gg0
exe "norm! df\<Char-0x101>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
norm! 1gg0
exe "norm! df\<esc>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))

" clean up
bw!
call setline(2, 'abcdefghijklmnāf')
norm! 2gg0
exe "norm! df\<Char-0x101>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))
norm! 1gg0
exe "norm! df\<esc>"
call assert_equal(['abcdefghijklmn', 'f'], getline(1,'$'))

" clean up
bw!
endfunc

func Test_normal_large_count()
" This may fail with 32bit long, how do we detect that?
new
normal o
normal 6666666666dL
bwipe!
endfunc
@@ -764,6 +764,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
516,
/**/
515,
/**/

0 comments on commit b1e04fc

Please sign in to comment.
You can’t perform that action at this time.