mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
updated for version 7.3.701
Problem: MS-Windows: Crash with stack overflow when setting 'encoding'. Solution: Handle that loading the iconv library may be called recursively. (Jiri Sedlak)
This commit is contained in:
@@ -288,18 +288,26 @@ unescape_shellxquote(char_u *p, char_u *escaped)
|
|||||||
vimLoadLib(char *name)
|
vimLoadLib(char *name)
|
||||||
{
|
{
|
||||||
HINSTANCE dll = NULL;
|
HINSTANCE dll = NULL;
|
||||||
char old_dir[MAXPATHL];
|
TCHAR old_dir[MAXPATHL];
|
||||||
|
|
||||||
|
/* NOTE: Do not use mch_dirname() and mch_chdir() here, they may call
|
||||||
|
* vimLoadLib() recursively, which causes a stack overflow. */
|
||||||
if (exe_path == NULL)
|
if (exe_path == NULL)
|
||||||
get_exe_name();
|
get_exe_name();
|
||||||
if (exe_path != NULL && mch_dirname(old_dir, MAXPATHL) == OK)
|
if (exe_path != NULL && GetCurrentDirectory(MAXPATHL, old_dir) != 0)
|
||||||
{
|
{
|
||||||
/* Change directory to where the executable is, both to make sure we
|
/* 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
|
* find a .dll there and to avoid looking for a .dll in the current
|
||||||
* directory. */
|
* directory. */
|
||||||
mch_chdir(exe_path);
|
SetCurrentDirectory(exe_path);
|
||||||
|
dll = LoadLibrary(name);
|
||||||
|
SetCurrentDirectory(old_dir);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* We are not able to change directory to where the executable is, try
|
||||||
|
* to load library anyway. */
|
||||||
dll = LoadLibrary(name);
|
dll = LoadLibrary(name);
|
||||||
mch_chdir(old_dir);
|
|
||||||
}
|
}
|
||||||
return dll;
|
return dll;
|
||||||
}
|
}
|
||||||
|
@@ -719,6 +719,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
701,
|
||||||
/**/
|
/**/
|
||||||
700,
|
700,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user