]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 9.0.2089: sound_playfile() fails when using powershell v9.0.2089
authorGuyBrush <miguel.barro@live.com>
Sat, 4 Nov 2023 08:48:53 +0000 (09:48 +0100)
committerChristian Brabandt <cb@256bit.org>
Sat, 4 Nov 2023 08:54:00 +0000 (09:54 +0100)
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>
src/Make_mvc.mak
src/sound.c
src/version.c

index 5573a585f9ec937ccbc8712bdd36ff97c2e90c79..bc2516cd32469cc00ca2654583e9b118ed4b1632 100644 (file)
@@ -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)
 
index 6e949e85bc1bbff3108cdaaf5f87e285a6c62197..abe412ca90ac3404caf07e7106f2e74d6cf9d1da 100644 (file)
@@ -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)
index e45df160bd301779421629c7339103b26e976394..46d68c7539862c3cfe52885ee99d45da79457728 100644 (file)
@@ -704,6 +704,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    2089,
 /**/
     2088,
 /**/