]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.276 v7.3.276
authorBram Moolenaar <Bram@vim.org>
Wed, 10 Aug 2011 14:31:23 +0000 (16:31 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 10 Aug 2011 14:31:23 +0000 (16:31 +0200)
Problem:    GvimExt sets $LANG in the wrong way.
Solution:   Save the environment and use it for gvim. (Yasuhiro Matsumoto)

src/GvimExt/gvimext.cpp
src/version.c

index 7c7ec99d3f04593e9ea904e041438b583a5b950e..975453cafa5e1b4be656b5eec9dbf245e3d029e7 100644 (file)
@@ -142,6 +142,7 @@ static char *null_libintl_bindtextdomain(const char *, const char *);
 static int dyn_libintl_init(char *dir);
 static void dyn_libintl_end(void);
 
+static wchar_t *oldenv = NULL;
 static HINSTANCE hLibintlDLL = 0;
 static char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
 static char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
@@ -339,8 +340,10 @@ DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID  /* lpReserved */)
 inc_cRefThisDLL()
 {
 #ifdef FEAT_GETTEXT
-    if (g_cRefThisDll == 0)
+    if (g_cRefThisDll == 0) {
        dyn_gettext_load();
+       oldenv = GetEnvironmentStringsW();
+    }
 #endif
     InterlockedIncrement((LPLONG)&g_cRefThisDll);
 }
@@ -349,8 +352,13 @@ inc_cRefThisDLL()
 dec_cRefThisDLL()
 {
 #ifdef FEAT_GETTEXT
-    if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0)
+    if (InterlockedDecrement((LPLONG)&g_cRefThisDll) == 0) {
        dyn_gettext_free();
+       if (oldenv != NULL) {
+           FreeEnvironmentStringsW(oldenv);
+           oldenv = NULL;
+       }
+    }
 #else
     InterlockedDecrement((LPLONG)&g_cRefThisDll);
 #endif
@@ -905,8 +913,8 @@ STDMETHODIMP CShellExt::InvokeGvim(HWND hParent,
                        NULL,           // Process handle not inheritable.
                        NULL,           // Thread handle not inheritable.
                        FALSE,          // Set handle inheritance to FALSE.
-                       0,              // No creation flags.
-                       NULL,           // Use parent's environment block.
+                       oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
+                       oldenv,         // Use unmodified environment block.
                        NULL,           // Use parent's starting directory.
                        &si,            // Pointer to STARTUPINFO structure.
                        &pi)            // Pointer to PROCESS_INFORMATION structure.
@@ -987,8 +995,8 @@ STDMETHODIMP CShellExt::InvokeSingleGvim(HWND hParent,
                NULL,           // Process handle not inheritable.
                NULL,           // Thread handle not inheritable.
                FALSE,          // Set handle inheritance to FALSE.
-               0,              // No creation flags.
-               NULL,           // Use parent's environment block.
+               oldenv == NULL ? 0 : CREATE_UNICODE_ENVIRONMENT,
+               oldenv,         // Use unmodified environment block.
                NULL,           // Use parent's starting directory.
                &si,            // Pointer to STARTUPINFO structure.
                &pi)            // Pointer to PROCESS_INFORMATION structure.
index 1d8b4109cb1211ddb579fd27eb248ccc82eb6cd5..cdbde1248e18acc6a0408e89493a38163abbab5c 100644 (file)
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    276,
 /**/
     275,
 /**/