[vim] - patchlevel 034

Karsten Hopp karsten at fedoraproject.org
Sat Oct 23 16:10:35 UTC 2010


commit 1571b8a9310ca8cba0c2e9c7b29d9386264c812a
Author: Karsten Hopp <karsten at redhat.com>
Date:   Sat Oct 23 18:10:18 2010 +0200

    - patchlevel 034

 7.3.034 |  431 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 431 insertions(+), 0 deletions(-)
---
diff --git a/7.3.034 b/7.3.034
new file mode 100644
index 0000000..c81890e
--- /dev/null
+++ b/7.3.034
@@ -0,0 +1,431 @@
+To: vim-dev at vim.org
+Subject: Patch 7.3.034
+Fcc: outbox
+From: Bram Moolenaar <Bram at 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 at 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    ///


More information about the scm-commits mailing list