patch 8.2.3870: MS-Windows: wrong dir when using right-click context menu

Problem:    MS-Windows: wrong working directory when opening two files with
            right-click context menu. (Gabriel Dupras)
Solution:   Use the working directory and pass it on to the process creation.
            (Nir Lichtman, closes #9382, closes #8874)
diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp
index e56379c..dd26eb1 100644
--- a/src/GvimExt/gvimext.cpp
+++ b/src/GvimExt/gvimext.cpp
@@ -776,8 +776,12 @@
 		    // development.
 		    return E_FAIL;
 	    }
+
+            LPCMINVOKECOMMANDINFOEX lpcmiex = (LPCMINVOKECOMMANDINFOEX)lpcmi;
+            LPCWSTR currentDirectory = lpcmi->cbSize == sizeof(CMINVOKECOMMANDINFOEX) ? lpcmiex->lpDirectoryW : NULL;
+
 	    hr = InvokeSingleGvim(lpcmi->hwnd,
-		    lpcmi->lpDirectory,
+		    currentDirectory,
 		    lpcmi->lpVerb,
 		    lpcmi->lpParameters,
 		    lpcmi->nShow,
@@ -884,7 +888,7 @@
 
 
 STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent,
-				   LPCSTR  /* pszWorkingDir */,
+				   LPCWSTR  workingDir,
 				   LPCSTR  /* pszCmd */,
 				   LPCSTR  /* pszParam */,
 				   int  /* iShowCmd */,
@@ -944,7 +948,7 @@
 		FALSE,		// Set handle inheritance to FALSE.
 		0,		// No creation flags.
 		NULL,		// Use parent's environment block.
-		NULL,		// Use parent's starting directory.
+		workingDir,  // Use parent's starting directory.
 		&si,		// Pointer to STARTUPINFO structure.
 		&pi)		// Pointer to PROCESS_INFORMATION structure.
        )
diff --git a/src/GvimExt/gvimext.h b/src/GvimExt/gvimext.h
index 3ad797e..b6be3a7 100644
--- a/src/GvimExt/gvimext.h
+++ b/src/GvimExt/gvimext.h
@@ -130,7 +130,7 @@
 	    int idHWnd);
 
     STDMETHODIMP InvokeSingleGvim(HWND hParent,
-	    LPCSTR pszWorkingDir,
+	    LPCWSTR workingDir,
 	    LPCSTR pszCmd,
 	    LPCSTR pszParam,
 	    int iShowCmd,
diff --git a/src/version.c b/src/version.c
index c5877df..50902d6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -750,6 +750,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3870,
+/**/
     3869,
 /**/
     3868,