summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuyBrush <miguel.barro@live.com>2023-11-04 09:48:53 +0100
committerChristian Brabandt <cb@256bit.org>2023-11-04 09:54:00 +0100
commit15d270019e88a8ba67618adf5efe1aaa81ce354b (patch)
tree79cf18932b6219d560e9ba060e1de97e64da7542
parent5a53925a6eea929118e5438685e9ebc16ae48aa2 (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.mak2
-rw-r--r--src/sound.c20
-rw-r--r--src/version.c2
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,