Mercurial > vim
diff src/testdir/test_sound.vim @ 17708:10696f279e20 v8.1.1851
patch 8.1.1851: crash when sound_playfile() callback plays sound
commit https://github.com/vim/vim/commit/28e67e0c1496b7bb166a0acfb176690f219101ca
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Aug 15 23:05:49 2019 +0200
patch 8.1.1851: crash when sound_playfile() callback plays sound
Problem: Crash when sound_playfile() callback plays sound.
Solution: Invoke callback later from event loop.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 15 Aug 2019 23:15:04 +0200 |
parents | be5a5cfc991a |
children | 988e5a868b60 |
line wrap: on
line diff
--- a/src/testdir/test_sound.vim +++ b/src/testdir/test_sound.vim @@ -13,7 +13,6 @@ func Test_play_event() if has('win32') throw 'Skipped: Playing event with callback is not supported on Windows' endif - let id = sound_playevent('bell', 'PlayCallback') if id == 0 throw 'Skipped: bell event not available' @@ -21,7 +20,7 @@ func Test_play_event() " Stop it quickly, avoid annoying the user. sleep 20m call sound_stop(id) - sleep 20m + sleep 30m call assert_equal(id, g:id) call assert_equal(1, g:result) " sound was aborted endfunc @@ -46,6 +45,20 @@ func Test_play_silent() call assert_true(id2 > 0) sleep 20m call sound_clear() + sleep 30m call assert_equal(id2, g:id) call assert_equal(1, g:result) + + " recursive use was causing a crash + func PlayAgain(id, fname) + let g:id = a:id + let g:id_again = sound_playfile(a:fname) + endfunc + + let id3 = sound_playfile(fname, {id, res -> PlayAgain(id, fname)}) + call assert_true(id3 > 0) + sleep 50m + call sound_clear() + sleep 30m + call assert_true(g:id_again > 0) endfunc