From 3d0e7a956afb6f913466e96bd462eff0c92ad4c6 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 1 May 2021 17:46:03 +0200 Subject: patch 8.2.2821: MS-Windows: unnessarily loading libraries when registering OLE Problem: MS-Windows: unnessarily loading libraries when registering OLE. Solution: Skip loading libraries when invoked with "-register". --- src/globals.h | 1 + src/main.c | 14 ++++++++++++++ src/os_win32.c | 4 ++++ src/version.c | 2 ++ 4 files changed, 21 insertions(+) diff --git a/src/globals.h b/src/globals.h index 5e6b6461d9..b6541a4f4f 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1311,6 +1311,7 @@ EXTERN int wild_menu_showing INIT(= 0); #ifdef MSWIN EXTERN char_u toupper_tab[256]; // table for toupper() EXTERN char_u tolower_tab[256]; // table for tolower() +EXTERN int found_register_arg INIT(= FALSE); #endif #ifdef FEAT_LINEBREAK diff --git a/src/main.c b/src/main.c index 30014d4be2..686fb14324 100644 --- a/src/main.c +++ b/src/main.c @@ -161,6 +161,20 @@ main break; } #endif +#ifdef MSWIN + // Need to find "-register" before loading any libraries. + for (i = 1; i < argc; ++i) + if (STRICMP(argv[i] + 1, "register") == 0 + && (argv[i][0] == '-' || argv[i][0] == '/')) + { + found_register_arg = TRUE; + break; + } +#endif + + /* + * Various initialisations shared with tests. + */ common_init(¶ms); #ifdef VIMDLL diff --git a/src/os_win32.c b/src/os_win32.c index d40d0332c2..3bfeee66ec 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -529,6 +529,10 @@ vimLoadLib(char *name) { HINSTANCE dll = NULL; + // No need to load any library when registering OLE. + if (found_register_arg) + return dll; + // NOTE: Do not use mch_dirname() and mch_chdir() here, they may call // vimLoadLib() recursively, which causes a stack overflow. if (exe_path == NULL) diff --git a/src/version.c b/src/version.c index ed632f7ba9..8140e20fa7 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 2821, /**/ 2820, /**/ -- cgit v1.2.3