Ozaki Kiichi wrote:

> Calling timer_stop in timer-callback causes SEGV.
> 
> [repro steps]
> 
> test.vim:
> ----
> function! StopTimer1(timer)
>   let g:timer2 = timer_start(50, 'StopTimer2')
>   " avoid bothersome maxfuncdepth error
>   call timer_pause(g:timer1, 1)
>   sleep 100m
> endfunction
> 
> function! StopTimer2(timer)
>   let g:timer3 = timer_start(50, 'StopTimer3')
>   call timer_stop(g:timer1)
> endfunction
> 
> function! StopTimer3(timer)
>   " Do nothing
> endfunction
> 
> function! TimerStart()
>   let g:timer1 = timer_start(50, 'StopTimer1')
>   sleep 100m
> endfunction
> ----
> 
> vim -Nu NONE -S test.vim
> 
> :call TimerStart()
> 
> then vim aborts.
> 
> [other problem]
> 
> Vim hangs up when timer is firing frequently.
> 
> test.vim:
> ----
> function! TimerStart()
>   call timer_start(0, 'TimerCallback', {'repeat' : -1})
> endfunction
> function! TimerCallback(...)
> endfunction
> ----
> 
> vim -Nu NONE -S test.vim
> 
> :call TimerStart()
> 
> then vim hangs up and we can't intercept by Ctrl-C.
> 
> [patch]
> 
> https://gist.github.com/ichizok/d6637a6d368bbf1353a35441c34039a7
> 
> * evalfunc.c patch is not concerned with those problems, this modifies 
> efficiency of timer_start() slightly.

Thanks, nice solution.

-- 
hundred-and-one symptoms of being an internet addict:
173. You keep tracking down the email addresses of all your friends
     (even childhood friends).

 /// Bram Moolenaar -- [email protected] -- 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    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui