summaryrefslogtreecommitdiffstats
path: root/source/ap/vim/patches/7.3.034
diff options
context:
space:
mode:
Diffstat (limited to 'source/ap/vim/patches/7.3.034')
-rw-r--r--source/ap/vim/patches/7.3.034431
1 files changed, 431 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.034 b/source/ap/vim/patches/7.3.034
new file mode 100644
index 000000000..c81890e10
--- /dev/null
+++ b/source/ap/vim/patches/7.3.034
@@ -0,0 +1,431 @@
+To: vim-dev@vim.org
+Subject: Patch 7.3.034
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.3.034
+Problem: Win32: may be loading .dll from the wrong directory.
+Solution: Go to the Vim executable directory when opening a library.
+Files: src/gui_w32.c, src/if_lua.c, src/if_mzsch.c, src/if_perl.xs,
+ src/if_python.c, src/if_python3.c, src/if_ruby.c, src/mbyte.c,
+ src/os_mswin.c, src/os_win32.c, src/proto/os_win32.pro
+
+
+*** ../vim-7.3.033/src/gui_w32.c 2010-08-15 21:57:25.000000000 +0200
+--- src/gui_w32.c 2010-10-22 21:49:27.000000000 +0200
+***************
+*** 1260,1266 ****
+
+ /* try and load the user32.dll library and get the entry points for
+ * multi-monitor-support. */
+! if ((user32_lib = LoadLibrary("User32.dll")) != NULL)
+ {
+ pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
+ "MonitorFromWindow");
+--- 1260,1266 ----
+
+ /* try and load the user32.dll library and get the entry points for
+ * multi-monitor-support. */
+! if ((user32_lib = vimLoadLib("User32.dll")) != NULL)
+ {
+ pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
+ "MonitorFromWindow");
+***************
+*** 4188,4194 ****
+ static void
+ dyn_imm_load(void)
+ {
+! hLibImm = LoadLibrary("imm32.dll");
+ if (hLibImm == NULL)
+ return;
+
+--- 4188,4194 ----
+ static void
+ dyn_imm_load(void)
+ {
+! hLibImm = vimLoadLib("imm32.dll");
+ if (hLibImm == NULL)
+ return;
+
+*** ../vim-7.3.033/src/if_lua.c 2010-08-15 21:57:28.000000000 +0200
+--- src/if_lua.c 2010-10-22 21:49:39.000000000 +0200
+***************
+*** 49,55 ****
+ # define symbol_from_dll dlsym
+ # define close_dll dlclose
+ #else
+! # define load_dll LoadLibrary
+ # define symbol_from_dll GetProcAddress
+ # define close_dll FreeLibrary
+ #endif
+--- 49,55 ----
+ # define symbol_from_dll dlsym
+ # define close_dll dlclose
+ #else
+! # define load_dll vimLoadLib
+ # define symbol_from_dll GetProcAddress
+ # define close_dll FreeLibrary
+ #endif
+*** ../vim-7.3.033/src/if_mzsch.c 2010-08-15 21:57:32.000000000 +0200
+--- src/if_mzsch.c 2010-10-22 21:49:53.000000000 +0200
+***************
+*** 556,563 ****
+
+ if (hMzGC && hMzSch)
+ return OK;
+! hMzSch = LoadLibrary(sch_dll);
+! hMzGC = LoadLibrary(gc_dll);
+
+ if (!hMzSch)
+ {
+--- 556,563 ----
+
+ if (hMzGC && hMzSch)
+ return OK;
+! hMzSch = vimLoadLib(sch_dll);
+! hMzGC = vimLoadLib(gc_dll);
+
+ if (!hMzSch)
+ {
+*** ../vim-7.3.033/src/if_perl.xs 2010-08-15 21:57:30.000000000 +0200
+--- src/if_perl.xs 2010-10-22 21:53:06.000000000 +0200
+***************
+*** 106,112 ****
+ #define close_dll dlclose
+ #else
+ #define PERL_PROC FARPROC
+! #define load_dll LoadLibrary
+ #define symbol_from_dll GetProcAddress
+ #define close_dll FreeLibrary
+ #endif
+--- 106,112 ----
+ #define close_dll dlclose
+ #else
+ #define PERL_PROC FARPROC
+! #define load_dll vimLoadLib
+ #define symbol_from_dll GetProcAddress
+ #define close_dll FreeLibrary
+ #endif
+*** ../vim-7.3.033/src/if_python.c 2010-08-15 21:57:28.000000000 +0200
+--- src/if_python.c 2010-10-22 21:49:57.000000000 +0200
+***************
+*** 110,116 ****
+ # define close_dll dlclose
+ # define symbol_from_dll dlsym
+ # else
+! # define load_dll LoadLibrary
+ # define close_dll FreeLibrary
+ # define symbol_from_dll GetProcAddress
+ # endif
+--- 110,116 ----
+ # define close_dll dlclose
+ # define symbol_from_dll dlsym
+ # else
+! # define load_dll vimLoadLib
+ # define close_dll FreeLibrary
+ # define symbol_from_dll GetProcAddress
+ # endif
+*** ../vim-7.3.033/src/if_python3.c 2010-08-15 21:57:28.000000000 +0200
+--- src/if_python3.c 2010-10-22 21:50:01.000000000 +0200
+***************
+*** 88,94 ****
+ # define close_dll dlclose
+ # define symbol_from_dll dlsym
+ # else
+! # define load_dll LoadLibrary
+ # define close_dll FreeLibrary
+ # define symbol_from_dll GetProcAddress
+ # endif
+--- 88,94 ----
+ # define close_dll dlclose
+ # define symbol_from_dll dlsym
+ # else
+! # define load_dll vimLoadLib
+ # define close_dll FreeLibrary
+ # define symbol_from_dll GetProcAddress
+ # endif
+*** ../vim-7.3.033/src/if_ruby.c 2010-09-29 13:02:48.000000000 +0200
+--- src/if_ruby.c 2010-10-22 21:50:04.000000000 +0200
+***************
+*** 55,61 ****
+ # define symbol_from_dll dlsym
+ # define close_dll dlclose
+ #else
+! # define load_dll LoadLibrary
+ # define symbol_from_dll GetProcAddress
+ # define close_dll FreeLibrary
+ #endif
+--- 55,61 ----
+ # define symbol_from_dll dlsym
+ # define close_dll dlclose
+ #else
+! # define load_dll vimLoadLib
+ # define symbol_from_dll GetProcAddress
+ # define close_dll FreeLibrary
+ #endif
+*** ../vim-7.3.033/src/mbyte.c 2010-09-18 13:36:41.000000000 +0200
+--- src/mbyte.c 2010-10-22 21:50:09.000000000 +0200
+***************
+*** 4159,4169 ****
+ {
+ if (hIconvDLL != 0 && hMsvcrtDLL != 0)
+ return TRUE;
+! hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL);
+ if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */
+! hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL_ALT);
+ if (hIconvDLL != 0)
+! hMsvcrtDLL = LoadLibrary(DYNAMIC_MSVCRT_DLL);
+ if (hIconvDLL == 0 || hMsvcrtDLL == 0)
+ {
+ /* Only give the message when 'verbose' is set, otherwise it might be
+--- 4159,4169 ----
+ {
+ if (hIconvDLL != 0 && hMsvcrtDLL != 0)
+ return TRUE;
+! hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL);
+ if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */
+! hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT);
+ if (hIconvDLL != 0)
+! hMsvcrtDLL = vimLoadLib(DYNAMIC_MSVCRT_DLL);
+ if (hIconvDLL == 0 || hMsvcrtDLL == 0)
+ {
+ /* Only give the message when 'verbose' is set, otherwise it might be
+*** ../vim-7.3.033/src/os_mswin.c 2010-08-15 21:57:29.000000000 +0200
+--- src/os_mswin.c 2010-10-22 22:03:26.000000000 +0200
+***************
+*** 817,823 ****
+--- 817,827 ----
+ BOOL fRunTimeLinkSuccess = FALSE;
+
+ // Get a handle to the DLL module.
++ # ifdef WIN16
+ hinstLib = LoadLibrary(libname);
++ # else
++ hinstLib = vimLoadLib(libname);
++ # endif
+
+ // If the handle is valid, try to get the function address.
+ if (hinstLib != NULL)
+*** ../vim-7.3.033/src/os_win32.c 2010-10-13 20:37:37.000000000 +0200
+--- src/os_win32.c 2010-10-23 13:16:55.000000000 +0200
+***************
+*** 206,247 ****
+ static int suppress_winsize = 1; /* don't fiddle with console */
+ #endif
+
+ static void
+ get_exe_name(void)
+ {
+! char temp[256];
+! static int did_set_PATH = FALSE;
+
+ if (exe_name == NULL)
+ {
+ /* store the name of the executable, may be used for $VIM */
+! GetModuleFileName(NULL, temp, 255);
+ if (*temp != NUL)
+ exe_name = FullName_save((char_u *)temp, FALSE);
+ }
+
+! if (!did_set_PATH && exe_name != NULL)
+ {
+! char_u *p;
+! char_u *newpath;
+!
+! /* Append our starting directory to $PATH, so that when doing "!xxd"
+! * it's found in our starting directory. Needed because SearchPath()
+! * also looks there. */
+! p = mch_getenv("PATH");
+! newpath = alloc((unsigned)(STRLEN(p) + STRLEN(exe_name) + 2));
+! if (newpath != NULL)
+! {
+! STRCPY(newpath, p);
+! STRCAT(newpath, ";");
+! vim_strncpy(newpath + STRLEN(newpath), exe_name,
+! gettail_sep(exe_name) - exe_name);
+! vim_setenv((char_u *)"PATH", newpath);
+! vim_free(newpath);
+ }
+
+! did_set_PATH = TRUE;
+ }
+ }
+
+ #if defined(DYNAMIC_GETTEXT) || defined(PROTO)
+--- 206,268 ----
+ static int suppress_winsize = 1; /* don't fiddle with console */
+ #endif
+
++ static char_u *exe_path = NULL;
++
+ static void
+ get_exe_name(void)
+ {
+! char temp[MAXPATHL];
+! char_u *p;
+
+ if (exe_name == NULL)
+ {
+ /* store the name of the executable, may be used for $VIM */
+! GetModuleFileName(NULL, temp, MAXPATHL - 1);
+ if (*temp != NUL)
+ exe_name = FullName_save((char_u *)temp, FALSE);
+ }
+
+! if (exe_path == NULL && exe_name != NULL)
+ {
+! exe_path = vim_strnsave(exe_name, gettail_sep(exe_name) - exe_name);
+! if (exe_path != NULL)
+! {
+! /* Append our starting directory to $PATH, so that when doing
+! * "!xxd" it's found in our starting directory. Needed because
+! * SearchPath() also looks there. */
+! p = mch_getenv("PATH");
+! if (STRLEN(p) + STRLEN(exe_path) + 2 < MAXPATHL);
+! {
+! STRCPY(temp, p);
+! STRCAT(temp, ";");
+! STRCAT(temp, exe_path);
+! vim_setenv((char_u *)"PATH", temp);
+! }
+ }
++ }
++ }
++
++ /*
++ * Load library "name".
++ */
++ HINSTANCE
++ vimLoadLib(char *name)
++ {
++ HINSTANCE dll = NULL;
++ char old_dir[MAXPATHL];
+
+! if (exe_path == NULL)
+! get_exe_name();
+! if (exe_path != NULL && mch_dirname(old_dir, MAXPATHL) == OK)
+! {
+! /* Change directory to where the executable is, both to make sure we
+! * find a .dll there and to avoid looking for a .dll in the current
+! * directory. */
+! mch_chdir(exe_path);
+! dll = LoadLibrary(name);
+! mch_chdir(old_dir);
+ }
++ return dll;
+ }
+
+ #if defined(DYNAMIC_GETTEXT) || defined(PROTO)
+***************
+*** 254,260 ****
+ static char *null_libintl_bindtextdomain(const char *, const char *);
+ static char *null_libintl_bind_textdomain_codeset(const char *, const char *);
+
+! static HINSTANCE hLibintlDLL = 0;
+ char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
+ char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
+ char *(*dyn_libintl_bindtextdomain)(const char *, const char *)
+--- 275,281 ----
+ static char *null_libintl_bindtextdomain(const char *, const char *);
+ static char *null_libintl_bind_textdomain_codeset(const char *, const char *);
+
+! static HINSTANCE hLibintlDLL = NULL;
+ char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
+ char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
+ char *(*dyn_libintl_bindtextdomain)(const char *, const char *)
+***************
+*** 282,307 ****
+ if (hLibintlDLL)
+ return 1;
+ /* Load gettext library (libintl.dll) */
+! hLibintlDLL = LoadLibrary(libname != NULL ? libname : GETTEXT_DLL);
+ if (!hLibintlDLL)
+ {
+! char_u dirname[_MAX_PATH];
+!
+! /* Try using the path from gvim.exe to find the .dll there. */
+! get_exe_name();
+! STRCPY(dirname, exe_name);
+! STRCPY(gettail(dirname), GETTEXT_DLL);
+! hLibintlDLL = LoadLibrary((char *)dirname);
+! if (!hLibintlDLL)
+ {
+! if (p_verbose > 0)
+! {
+! verbose_enter();
+! EMSG2(_(e_loadlib), GETTEXT_DLL);
+! verbose_leave();
+! }
+! return 0;
+ }
+ }
+ for (i = 0; libintl_entry[i].name != NULL
+ && libintl_entry[i].ptr != NULL; ++i)
+--- 303,318 ----
+ if (hLibintlDLL)
+ return 1;
+ /* Load gettext library (libintl.dll) */
+! hLibintlDLL = vimLoadLib(libname != NULL ? libname : GETTEXT_DLL);
+ if (!hLibintlDLL)
+ {
+! if (p_verbose > 0)
+ {
+! verbose_enter();
+! EMSG2(_(e_loadlib), GETTEXT_DLL);
+! verbose_leave();
+ }
++ return 0;
+ }
+ for (i = 0; libintl_entry[i].name != NULL
+ && libintl_entry[i].ptr != NULL; ++i)
+***************
+*** 430,436 ****
+ * Seems like a lot of overhead to load/unload ADVAPI32.DLL each
+ * time we verify security...
+ */
+! advapi_lib = LoadLibrary("ADVAPI32.DLL");
+ if (advapi_lib != NULL)
+ {
+ pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib,
+--- 441,447 ----
+ * Seems like a lot of overhead to load/unload ADVAPI32.DLL each
+ * time we verify security...
+ */
+! advapi_lib = vimLoadLib("ADVAPI32.DLL");
+ if (advapi_lib != NULL)
+ {
+ pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib,
+*** ../vim-7.3.033/src/proto/os_win32.pro 2010-08-15 21:57:28.000000000 +0200
+--- src/proto/os_win32.pro 2010-10-22 22:05:35.000000000 +0200
+***************
+*** 1,4 ****
+--- 1,5 ----
+ /* os_win32.c */
++ HINSTANCE vimLoadLib __ARGS((char *name));
+ int dyn_libintl_init __ARGS((char *libname));
+ void dyn_libintl_end __ARGS((void));
+ void PlatformId __ARGS((void));
+*** ../vim-7.3.033/src/version.c 2010-10-22 22:13:47.000000000 +0200
+--- src/version.c 2010-10-23 13:55:21.000000000 +0200
+***************
+*** 716,717 ****
+--- 716,719 ----
+ { /* Add new patch number below this line */
++ /**/
++ 34,
+ /**/
+
+--
+This is the polymorph virus! Follow these instructions carefully:
+1. Send this message to everybody you know.
+2. Format your harddisk.
+Thank you for your cooperation in spreading the most powerful virus ever!
+
+ /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
+/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
+\\\ download, build and distribute -- http://www.A-A-P.org ///
+ \\\ help me help AIDS victims -- http://ICCF-Holland.org ///