Mercurial > vim
view src/testdir/test_sound.vim @ 18945:c62d63d2b9f0 v8.2.0033
patch 8.2.0033: crash when make_extmatch() runs out of memory
Commit: https://github.com/vim/vim/commit/7c77b3496710f1be3232cfdc7f6812347fbd914a
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Dec 22 19:40:40 2019 +0100
patch 8.2.0033: crash when make_extmatch() runs out of memory
Problem: Crash when make_extmatch() runs out of memory.
Solution: Check for NULL. (Dominique Pelle, closs https://github.com/vim/vim/issues/5392)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sun, 22 Dec 2019 19:45:03 +0100 |
parents | 988e5a868b60 |
children | 08940efa6b4e |
line wrap: on
line source
" Tests for the sound feature if !has('sound') throw 'Skipped: sound feature not available' endif func PlayCallback(id, result) let g:id = a:id let g:result = a:result endfunc func Test_play_event() if has('win32') throw 'Skipped: Playing event with callback is not supported on Windows' endif let id = 'bell'->sound_playevent('PlayCallback') if id == 0 throw 'Skipped: bell event not available' endif " Stop it quickly, avoid annoying the user. sleep 20m eval id->sound_stop() sleep 30m call assert_equal(id, g:id) call assert_equal(1, g:result) " sound was aborted endfunc func Test_play_silent() let fname = fnamemodify('silent.wav', '%p') " play without callback let id1 = sound_playfile(fname) if id1 == 0 throw 'Skipped: playing a sound is not working' endif " play until the end let id2 = fname->sound_playfile('PlayCallback') call assert_true(id2 > 0) sleep 500m call assert_equal(id2, g:id) call assert_equal(0, g:result) let id2 = sound_playfile(fname, 'PlayCallback') 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