diff options
Diffstat (limited to 'winsup/cygwin')
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/hookapi.cc | 3 | ||||
-rw-r--r-- | winsup/cygwin/path.h | 6 |
3 files changed, 13 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 38b6d7c1c..fc8646ef6 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5 +1,10 @@ 2007-08-20 Corinna Vinschen <corinna@vinschen.de> + * hookapi.cc (ld_preload): Call LoadLibraryW. + * path.h (path_conv::get_wide_win32_path_len): Define. + +2007-08-20 Corinna Vinschen <corinna@vinschen.de> + * fhandler.cc (rootdir): Delete. * winsup.h (rootdir): Drop declaration. 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; } |