From 891b6e885e8ff6692f8be695e830a929b97172ab Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Mon, 20 Aug 2007 15:41:08 +0000 Subject: [PATCH] * hookapi.cc (ld_preload): Call LoadLibraryW. * path.h (path_conv::get_wide_win32_path_len): Define. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/hookapi.cc | 3 ++- winsup/cygwin/path.h | 6 ++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 38b6d7c1c..fc8646ef6 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2007-08-20 Corinna Vinschen + + * hookapi.cc (ld_preload): Call LoadLibraryW. + * path.h (path_conv::get_wide_win32_path_len): Define. + 2007-08-20 Corinna Vinschen * fhandler.cc (rootdir): Delete. diff --git a/winsup/cygwin/hookapi.cc b/winsup/cygwin/hookapi.cc index 552b8bb86..76271ef83 100644 --- a/winsup/cygwin/hookapi.cc +++ b/winsup/cygwin/hookapi.cc @@ -219,7 +219,8 @@ ld_preload () for (p = strtok_r (s, ":\t\n", &here); p; p = strtok_r (NULL, ":\t\n", &here)) { path_conv lib (p); - if (!LoadLibrary (lib.get_win32 ())) + WCHAR libname[lib.get_wide_win32_path_len () + 1]; + if (!LoadLibraryW (lib.get_wide_win32_path (libname))) { __seterrno (); api_fatal ("error while loading shared libraries: %s: " diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index fb654d0f9..b258ac9b6 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -240,6 +240,12 @@ class path_conv PUNICODE_STRING get_nt_native_path (); POBJECT_ATTRIBUTES get_object_attr (OBJECT_ATTRIBUTES &attr, SECURITY_ATTRIBUTES &sa); + inline size_t get_wide_win32_path_len () + { + get_nt_native_path (); + return uni_path.Length / sizeof (WCHAR); + } + PWCHAR get_wide_win32_path (PWCHAR wc); operator DWORD &() {return fileattr;} operator int () {return fileattr; }