Mercurial > vim
comparison src/testdir/test_channel.vim @ 13598:8723e4496dd1 v8.0.1671
patch 8.0.1671: crash when passing non-dict argument as env to job_start()
commit https://github.com/vim/vim/commit/22efba47deb7e504142487fdc1617ec638cf0683
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Apr 7 13:22:21 2018 +0200
patch 8.0.1671: crash when passing non-dict argument as env to job_start()
Problem: Crash when passing non-dict argument as env to job_start().
Solution: Check for valid argument. (Ozaki Kiichi, closes https://github.com/vim/vim/issues/2765)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 07 Apr 2018 13:30:06 +0200 |
parents | c0ebd15a0908 |
children | 87ffb7f85b28 |
comparison
equal
deleted
inserted
replaced
13597:3010125c4ab8 | 13598:8723e4496dd1 |
---|---|
1718 return | 1718 return |
1719 endif | 1719 endif |
1720 | 1720 |
1721 let g:envstr = '' | 1721 let g:envstr = '' |
1722 if has('win32') | 1722 if has('win32') |
1723 call job_start(['cmd', '/c', 'echo %FOO%'], {'callback': {ch,msg->execute(":let g:envstr .= msg")}, 'env':{'FOO': 'bar'}}) | 1723 let cmd = ['cmd', '/c', 'echo %FOO%'] |
1724 else | 1724 else |
1725 call job_start([&shell, &shellcmdflag, 'echo $FOO'], {'callback': {ch,msg->execute(":let g:envstr .= msg")}, 'env':{'FOO': 'bar'}}) | 1725 let cmd = [&shell, &shellcmdflag, 'echo $FOO'] |
1726 endif | 1726 endif |
1727 call assert_fails('call job_start(cmd, {"env": 1})', 'E475:') | |
1728 call job_start(cmd, {'callback': {ch,msg -> execute(":let g:envstr .= msg")}, 'env': {'FOO': 'bar'}}) | |
1727 call WaitFor('"" != g:envstr') | 1729 call WaitFor('"" != g:envstr') |
1728 call assert_equal("bar", g:envstr) | 1730 call assert_equal("bar", g:envstr) |
1729 unlet g:envstr | 1731 unlet g:envstr |
1730 endfunc | 1732 endfunc |
1731 | 1733 |
1735 endif | 1737 endif |
1736 | 1738 |
1737 let g:envstr = '' | 1739 let g:envstr = '' |
1738 if has('win32') | 1740 if has('win32') |
1739 let expect = $TEMP | 1741 let expect = $TEMP |
1740 let job = job_start(['cmd', '/c', 'echo %CD%'], {'callback': {ch,msg->execute(":let g:envstr .= msg")}, 'cwd': expect}) | 1742 let cmd = ['cmd', '/c', 'echo %CD%'] |
1741 else | 1743 else |
1742 let expect = $HOME | 1744 let expect = $HOME |
1743 let job = job_start(['pwd'], {'callback': {ch,msg->execute(":let g:envstr .= msg")}, 'cwd': expect}) | 1745 let cmd = ['pwd'] |
1744 endif | 1746 endif |
1747 let job = job_start(cmd, {'callback': {ch,msg -> execute(":let g:envstr .= msg")}, 'cwd': expect}) | |
1745 try | 1748 try |
1746 call WaitFor('"" != g:envstr') | 1749 call WaitFor('"" != g:envstr') |
1747 let expect = substitute(expect, '[/\\]$', '', '') | 1750 let expect = substitute(expect, '[/\\]$', '', '') |
1748 let g:envstr = substitute(g:envstr, '[/\\]$', '', '') | 1751 let g:envstr = substitute(g:envstr, '[/\\]$', '', '') |
1749 if $CI != '' && stridx(g:envstr, '/private/') == 0 | 1752 if $CI != '' && stridx(g:envstr, '/private/') == 0 |