]> git.ipfire.org Git - people/arne_f/ipfire-3.x.git/blob - vim/patches/vim-7.3.034.patch0
Change file layout of the makefiles.
[people/arne_f/ipfire-3.x.git] / vim / patches / vim-7.3.034.patch0
1 To: vim-dev@vim.org
2 Subject: Patch 7.3.034
3 Fcc: outbox
4 From: Bram Moolenaar <Bram@moolenaar.net>
5 Mime-Version: 1.0
6 Content-Type: text/plain; charset=UTF-8
7 Content-Transfer-Encoding: 8bit
8 ------------
9
10 Patch 7.3.034
11 Problem: Win32: may be loading .dll from the wrong directory.
12 Solution: Go to the Vim executable directory when opening a library.
13 Files: src/gui_w32.c, src/if_lua.c, src/if_mzsch.c, src/if_perl.xs,
14 src/if_python.c, src/if_python3.c, src/if_ruby.c, src/mbyte.c,
15 src/os_mswin.c, src/os_win32.c, src/proto/os_win32.pro
16
17
18 *** ../vim-7.3.033/src/gui_w32.c 2010-08-15 21:57:25.000000000 +0200
19 --- src/gui_w32.c 2010-10-22 21:49:27.000000000 +0200
20 ***************
21 *** 1260,1266 ****
22
23 /* try and load the user32.dll library and get the entry points for
24 * multi-monitor-support. */
25 ! if ((user32_lib = LoadLibrary("User32.dll")) != NULL)
26 {
27 pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
28 "MonitorFromWindow");
29 --- 1260,1266 ----
30
31 /* try and load the user32.dll library and get the entry points for
32 * multi-monitor-support. */
33 ! if ((user32_lib = vimLoadLib("User32.dll")) != NULL)
34 {
35 pMonitorFromWindow = (TMonitorFromWindow)GetProcAddress(user32_lib,
36 "MonitorFromWindow");
37 ***************
38 *** 4188,4194 ****
39 static void
40 dyn_imm_load(void)
41 {
42 ! hLibImm = LoadLibrary("imm32.dll");
43 if (hLibImm == NULL)
44 return;
45
46 --- 4188,4194 ----
47 static void
48 dyn_imm_load(void)
49 {
50 ! hLibImm = vimLoadLib("imm32.dll");
51 if (hLibImm == NULL)
52 return;
53
54 *** ../vim-7.3.033/src/if_lua.c 2010-08-15 21:57:28.000000000 +0200
55 --- src/if_lua.c 2010-10-22 21:49:39.000000000 +0200
56 ***************
57 *** 49,55 ****
58 # define symbol_from_dll dlsym
59 # define close_dll dlclose
60 #else
61 ! # define load_dll LoadLibrary
62 # define symbol_from_dll GetProcAddress
63 # define close_dll FreeLibrary
64 #endif
65 --- 49,55 ----
66 # define symbol_from_dll dlsym
67 # define close_dll dlclose
68 #else
69 ! # define load_dll vimLoadLib
70 # define symbol_from_dll GetProcAddress
71 # define close_dll FreeLibrary
72 #endif
73 *** ../vim-7.3.033/src/if_mzsch.c 2010-08-15 21:57:32.000000000 +0200
74 --- src/if_mzsch.c 2010-10-22 21:49:53.000000000 +0200
75 ***************
76 *** 556,563 ****
77
78 if (hMzGC && hMzSch)
79 return OK;
80 ! hMzSch = LoadLibrary(sch_dll);
81 ! hMzGC = LoadLibrary(gc_dll);
82
83 if (!hMzSch)
84 {
85 --- 556,563 ----
86
87 if (hMzGC && hMzSch)
88 return OK;
89 ! hMzSch = vimLoadLib(sch_dll);
90 ! hMzGC = vimLoadLib(gc_dll);
91
92 if (!hMzSch)
93 {
94 *** ../vim-7.3.033/src/if_perl.xs 2010-08-15 21:57:30.000000000 +0200
95 --- src/if_perl.xs 2010-10-22 21:53:06.000000000 +0200
96 ***************
97 *** 106,112 ****
98 #define close_dll dlclose
99 #else
100 #define PERL_PROC FARPROC
101 ! #define load_dll LoadLibrary
102 #define symbol_from_dll GetProcAddress
103 #define close_dll FreeLibrary
104 #endif
105 --- 106,112 ----
106 #define close_dll dlclose
107 #else
108 #define PERL_PROC FARPROC
109 ! #define load_dll vimLoadLib
110 #define symbol_from_dll GetProcAddress
111 #define close_dll FreeLibrary
112 #endif
113 *** ../vim-7.3.033/src/if_python.c 2010-08-15 21:57:28.000000000 +0200
114 --- src/if_python.c 2010-10-22 21:49:57.000000000 +0200
115 ***************
116 *** 110,116 ****
117 # define close_dll dlclose
118 # define symbol_from_dll dlsym
119 # else
120 ! # define load_dll LoadLibrary
121 # define close_dll FreeLibrary
122 # define symbol_from_dll GetProcAddress
123 # endif
124 --- 110,116 ----
125 # define close_dll dlclose
126 # define symbol_from_dll dlsym
127 # else
128 ! # define load_dll vimLoadLib
129 # define close_dll FreeLibrary
130 # define symbol_from_dll GetProcAddress
131 # endif
132 *** ../vim-7.3.033/src/if_python3.c 2010-08-15 21:57:28.000000000 +0200
133 --- src/if_python3.c 2010-10-22 21:50:01.000000000 +0200
134 ***************
135 *** 88,94 ****
136 # define close_dll dlclose
137 # define symbol_from_dll dlsym
138 # else
139 ! # define load_dll LoadLibrary
140 # define close_dll FreeLibrary
141 # define symbol_from_dll GetProcAddress
142 # endif
143 --- 88,94 ----
144 # define close_dll dlclose
145 # define symbol_from_dll dlsym
146 # else
147 ! # define load_dll vimLoadLib
148 # define close_dll FreeLibrary
149 # define symbol_from_dll GetProcAddress
150 # endif
151 *** ../vim-7.3.033/src/if_ruby.c 2010-09-29 13:02:48.000000000 +0200
152 --- src/if_ruby.c 2010-10-22 21:50:04.000000000 +0200
153 ***************
154 *** 55,61 ****
155 # define symbol_from_dll dlsym
156 # define close_dll dlclose
157 #else
158 ! # define load_dll LoadLibrary
159 # define symbol_from_dll GetProcAddress
160 # define close_dll FreeLibrary
161 #endif
162 --- 55,61 ----
163 # define symbol_from_dll dlsym
164 # define close_dll dlclose
165 #else
166 ! # define load_dll vimLoadLib
167 # define symbol_from_dll GetProcAddress
168 # define close_dll FreeLibrary
169 #endif
170 *** ../vim-7.3.033/src/mbyte.c 2010-09-18 13:36:41.000000000 +0200
171 --- src/mbyte.c 2010-10-22 21:50:09.000000000 +0200
172 ***************
173 *** 4159,4169 ****
174 {
175 if (hIconvDLL != 0 && hMsvcrtDLL != 0)
176 return TRUE;
177 ! hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL);
178 if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */
179 ! hIconvDLL = LoadLibrary(DYNAMIC_ICONV_DLL_ALT);
180 if (hIconvDLL != 0)
181 ! hMsvcrtDLL = LoadLibrary(DYNAMIC_MSVCRT_DLL);
182 if (hIconvDLL == 0 || hMsvcrtDLL == 0)
183 {
184 /* Only give the message when 'verbose' is set, otherwise it might be
185 --- 4159,4169 ----
186 {
187 if (hIconvDLL != 0 && hMsvcrtDLL != 0)
188 return TRUE;
189 ! hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL);
190 if (hIconvDLL == 0) /* sometimes it's called libiconv.dll */
191 ! hIconvDLL = vimLoadLib(DYNAMIC_ICONV_DLL_ALT);
192 if (hIconvDLL != 0)
193 ! hMsvcrtDLL = vimLoadLib(DYNAMIC_MSVCRT_DLL);
194 if (hIconvDLL == 0 || hMsvcrtDLL == 0)
195 {
196 /* Only give the message when 'verbose' is set, otherwise it might be
197 *** ../vim-7.3.033/src/os_mswin.c 2010-08-15 21:57:29.000000000 +0200
198 --- src/os_mswin.c 2010-10-22 22:03:26.000000000 +0200
199 ***************
200 *** 817,823 ****
201 --- 817,827 ----
202 BOOL fRunTimeLinkSuccess = FALSE;
203
204 // Get a handle to the DLL module.
205 + # ifdef WIN16
206 hinstLib = LoadLibrary(libname);
207 + # else
208 + hinstLib = vimLoadLib(libname);
209 + # endif
210
211 // If the handle is valid, try to get the function address.
212 if (hinstLib != NULL)
213 *** ../vim-7.3.033/src/os_win32.c 2010-10-13 20:37:37.000000000 +0200
214 --- src/os_win32.c 2010-10-23 13:16:55.000000000 +0200
215 ***************
216 *** 206,247 ****
217 static int suppress_winsize = 1; /* don't fiddle with console */
218 #endif
219
220 static void
221 get_exe_name(void)
222 {
223 ! char temp[256];
224 ! static int did_set_PATH = FALSE;
225
226 if (exe_name == NULL)
227 {
228 /* store the name of the executable, may be used for $VIM */
229 ! GetModuleFileName(NULL, temp, 255);
230 if (*temp != NUL)
231 exe_name = FullName_save((char_u *)temp, FALSE);
232 }
233
234 ! if (!did_set_PATH && exe_name != NULL)
235 {
236 ! char_u *p;
237 ! char_u *newpath;
238 !
239 ! /* Append our starting directory to $PATH, so that when doing "!xxd"
240 ! * it's found in our starting directory. Needed because SearchPath()
241 ! * also looks there. */
242 ! p = mch_getenv("PATH");
243 ! newpath = alloc((unsigned)(STRLEN(p) + STRLEN(exe_name) + 2));
244 ! if (newpath != NULL)
245 ! {
246 ! STRCPY(newpath, p);
247 ! STRCAT(newpath, ";");
248 ! vim_strncpy(newpath + STRLEN(newpath), exe_name,
249 ! gettail_sep(exe_name) - exe_name);
250 ! vim_setenv((char_u *)"PATH", newpath);
251 ! vim_free(newpath);
252 }
253
254 ! did_set_PATH = TRUE;
255 }
256 }
257
258 #if defined(DYNAMIC_GETTEXT) || defined(PROTO)
259 --- 206,268 ----
260 static int suppress_winsize = 1; /* don't fiddle with console */
261 #endif
262
263 + static char_u *exe_path = NULL;
264 +
265 static void
266 get_exe_name(void)
267 {
268 ! char temp[MAXPATHL];
269 ! char_u *p;
270
271 if (exe_name == NULL)
272 {
273 /* store the name of the executable, may be used for $VIM */
274 ! GetModuleFileName(NULL, temp, MAXPATHL - 1);
275 if (*temp != NUL)
276 exe_name = FullName_save((char_u *)temp, FALSE);
277 }
278
279 ! if (exe_path == NULL && exe_name != NULL)
280 {
281 ! exe_path = vim_strnsave(exe_name, gettail_sep(exe_name) - exe_name);
282 ! if (exe_path != NULL)
283 ! {
284 ! /* Append our starting directory to $PATH, so that when doing
285 ! * "!xxd" it's found in our starting directory. Needed because
286 ! * SearchPath() also looks there. */
287 ! p = mch_getenv("PATH");
288 ! if (STRLEN(p) + STRLEN(exe_path) + 2 < MAXPATHL);
289 ! {
290 ! STRCPY(temp, p);
291 ! STRCAT(temp, ";");
292 ! STRCAT(temp, exe_path);
293 ! vim_setenv((char_u *)"PATH", temp);
294 ! }
295 }
296 + }
297 + }
298 +
299 + /*
300 + * Load library "name".
301 + */
302 + HINSTANCE
303 + vimLoadLib(char *name)
304 + {
305 + HINSTANCE dll = NULL;
306 + char old_dir[MAXPATHL];
307
308 ! if (exe_path == NULL)
309 ! get_exe_name();
310 ! if (exe_path != NULL && mch_dirname(old_dir, MAXPATHL) == OK)
311 ! {
312 ! /* Change directory to where the executable is, both to make sure we
313 ! * find a .dll there and to avoid looking for a .dll in the current
314 ! * directory. */
315 ! mch_chdir(exe_path);
316 ! dll = LoadLibrary(name);
317 ! mch_chdir(old_dir);
318 }
319 + return dll;
320 }
321
322 #if defined(DYNAMIC_GETTEXT) || defined(PROTO)
323 ***************
324 *** 254,260 ****
325 static char *null_libintl_bindtextdomain(const char *, const char *);
326 static char *null_libintl_bind_textdomain_codeset(const char *, const char *);
327
328 ! static HINSTANCE hLibintlDLL = 0;
329 char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
330 char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
331 char *(*dyn_libintl_bindtextdomain)(const char *, const char *)
332 --- 275,281 ----
333 static char *null_libintl_bindtextdomain(const char *, const char *);
334 static char *null_libintl_bind_textdomain_codeset(const char *, const char *);
335
336 ! static HINSTANCE hLibintlDLL = NULL;
337 char *(*dyn_libintl_gettext)(const char *) = null_libintl_gettext;
338 char *(*dyn_libintl_textdomain)(const char *) = null_libintl_textdomain;
339 char *(*dyn_libintl_bindtextdomain)(const char *, const char *)
340 ***************
341 *** 282,307 ****
342 if (hLibintlDLL)
343 return 1;
344 /* Load gettext library (libintl.dll) */
345 ! hLibintlDLL = LoadLibrary(libname != NULL ? libname : GETTEXT_DLL);
346 if (!hLibintlDLL)
347 {
348 ! char_u dirname[_MAX_PATH];
349 !
350 ! /* Try using the path from gvim.exe to find the .dll there. */
351 ! get_exe_name();
352 ! STRCPY(dirname, exe_name);
353 ! STRCPY(gettail(dirname), GETTEXT_DLL);
354 ! hLibintlDLL = LoadLibrary((char *)dirname);
355 ! if (!hLibintlDLL)
356 {
357 ! if (p_verbose > 0)
358 ! {
359 ! verbose_enter();
360 ! EMSG2(_(e_loadlib), GETTEXT_DLL);
361 ! verbose_leave();
362 ! }
363 ! return 0;
364 }
365 }
366 for (i = 0; libintl_entry[i].name != NULL
367 && libintl_entry[i].ptr != NULL; ++i)
368 --- 303,318 ----
369 if (hLibintlDLL)
370 return 1;
371 /* Load gettext library (libintl.dll) */
372 ! hLibintlDLL = vimLoadLib(libname != NULL ? libname : GETTEXT_DLL);
373 if (!hLibintlDLL)
374 {
375 ! if (p_verbose > 0)
376 {
377 ! verbose_enter();
378 ! EMSG2(_(e_loadlib), GETTEXT_DLL);
379 ! verbose_leave();
380 }
381 + return 0;
382 }
383 for (i = 0; libintl_entry[i].name != NULL
384 && libintl_entry[i].ptr != NULL; ++i)
385 ***************
386 *** 430,436 ****
387 * Seems like a lot of overhead to load/unload ADVAPI32.DLL each
388 * time we verify security...
389 */
390 ! advapi_lib = LoadLibrary("ADVAPI32.DLL");
391 if (advapi_lib != NULL)
392 {
393 pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib,
394 --- 441,447 ----
395 * Seems like a lot of overhead to load/unload ADVAPI32.DLL each
396 * time we verify security...
397 */
398 ! advapi_lib = vimLoadLib("ADVAPI32.DLL");
399 if (advapi_lib != NULL)
400 {
401 pSetNamedSecurityInfo = (PSNSECINFO)GetProcAddress(advapi_lib,
402 *** ../vim-7.3.033/src/proto/os_win32.pro 2010-08-15 21:57:28.000000000 +0200
403 --- src/proto/os_win32.pro 2010-10-22 22:05:35.000000000 +0200
404 ***************
405 *** 1,4 ****
406 --- 1,5 ----
407 /* os_win32.c */
408 + HINSTANCE vimLoadLib __ARGS((char *name));
409 int dyn_libintl_init __ARGS((char *libname));
410 void dyn_libintl_end __ARGS((void));
411 void PlatformId __ARGS((void));
412 *** ../vim-7.3.033/src/version.c 2010-10-22 22:13:47.000000000 +0200
413 --- src/version.c 2010-10-23 13:55:21.000000000 +0200
414 ***************
415 *** 716,717 ****
416 --- 716,719 ----
417 { /* Add new patch number below this line */
418 + /**/
419 + 34,
420 /**/
421
422 --
423 This is the polymorph virus! Follow these instructions carefully:
424 1. Send this message to everybody you know.
425 2. Format your harddisk.
426 Thank you for your cooperation in spreading the most powerful virus ever!
427
428 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\
429 /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
430 \\\ download, build and distribute -- http://www.A-A-P.org ///
431 \\\ help me help AIDS victims -- http://ICCF-Holland.org ///