diff options
author | GuyBrush <miguel.barro@live.com> | 2023-11-04 09:48:53 +0100 |
---|---|---|
committer | Christian Brabandt <cb@256bit.org> | 2023-11-04 09:54:00 +0100 |
commit | 15d270019e88a8ba67618adf5efe1aaa81ce354b (patch) | |
tree | 79cf18932b6219d560e9ba060e1de97e64da7542 | |
parent | 5a53925a6eea929118e5438685e9ebc16ae48aa2 (diff) |
patch 9.0.2089: sound_playfile() fails when using powershellv9.0.2089
Problem: sound_playfile() fails when using powershell
Solution: quote filename using doublequotes, don't escape filename,
because it doesn't use the shell
Avoiding powershell escaping because mci open command doesn't support
single quoted filenames: open 'C:\whatever\sound.wav' is not valid.
closes: #13471
Signed-off-by: GuyBrush <miguel.barro@live.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
-rw-r--r-- | src/Make_mvc.mak | 2 | ||||
-rw-r--r-- | src/sound.c | 20 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 12 insertions, 12 deletions
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak index 5573a585f9..bc2516cd32 100644 --- a/src/Make_mvc.mak +++ b/src/Make_mvc.mak @@ -1272,7 +1272,7 @@ $(XPM_OBJ) $(OUTDIR)\version.obj $(LINKARGS2) $(VIM): $(VIM).exe $(OUTDIR): - if not exist $(OUTDIR)/nul mkdir $(OUTDIR) + if not exist $(OUTDIR)/nul mkdir $(OUTDIR:/=\) CFLAGS_INST = /nologo /O2 -DNDEBUG -DWIN32 -DWINVER=$(WINVER) -D_WIN32_WINNT=$(WINVER) $(CFLAGS_DEPR) diff --git a/src/sound.c b/src/sound.c index 6e949e85bc..abe412ca90 100644 --- a/src/sound.c +++ b/src/sound.c @@ -322,7 +322,7 @@ sound_wndproc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) vim_snprintf(buf, sizeof(buf), "close sound%06ld", p->snd_id); - mciSendString(buf, NULL, 0, 0); + mciSendStringA(buf, NULL, 0, 0); long result = wParam == MCI_NOTIFY_SUCCESSFUL ? 0 : wParam == MCI_NOTIFY_ABORTED ? 1 : 2; @@ -376,7 +376,7 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) { long newid = sound_id + 1; size_t len; - char_u *p, *esc; + char_u *p, *filename; WCHAR *wp; soundcb_T *soundcb; char buf[32]; @@ -385,17 +385,15 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) if (in_vim9script() && check_for_string_arg(argvars, 0) == FAIL) return; - esc = vim_strsave_shellescape(tv_get_string(&argvars[0]), FALSE, FALSE); + filename = tv_get_string(&argvars[0]); - len = STRLEN(esc) + 5 + 18 + 1; + len = STRLEN(filename) + 5 + 18 + 2 + 1; p = alloc(len); if (p == NULL) { - free(esc); return; } - vim_snprintf((char *)p, len, "open %s alias sound%06ld", esc, newid); - free(esc); + vim_snprintf((char *)p, len, "open \"%s\" alias sound%06ld", filename, newid); wp = enc_to_utf16((char_u *)p, NULL); free(p); @@ -408,7 +406,7 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) return; vim_snprintf(buf, sizeof(buf), "play sound%06ld notify", newid); - err = mciSendString(buf, NULL, 0, sound_window()); + err = mciSendStringA(buf, NULL, 0, sound_window()); if (err != 0) goto failure; @@ -426,7 +424,7 @@ f_sound_playfile(typval_T *argvars, typval_T *rettv) failure: vim_snprintf(buf, sizeof(buf), "close sound%06ld", newid); - mciSendString(buf, NULL, 0, NULL); + mciSendStringA(buf, NULL, 0, NULL); } void @@ -440,14 +438,14 @@ f_sound_stop(typval_T *argvars, typval_T *rettv UNUSED) id = tv_get_number(&argvars[0]); vim_snprintf(buf, sizeof(buf), "stop sound%06ld", id); - mciSendString(buf, NULL, 0, NULL); + mciSendStringA(buf, NULL, 0, NULL); } void f_sound_clear(typval_T *argvars UNUSED, typval_T *rettv UNUSED) { PlaySoundW(NULL, NULL, 0); - mciSendString("close all", NULL, 0, NULL); + mciSendStringA("close all", NULL, 0, NULL); } # if defined(EXITFREE) diff --git a/src/version.c b/src/version.c index e45df160bd..46d68c7539 100644 --- a/src/version.c +++ b/src/version.c @@ -705,6 +705,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2089, +/**/ 2088, /**/ 2087, |