summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2007-08-20 15:41:08 +0000
committerCorinna Vinschen <corinna@vinschen.de>2007-08-20 15:41:08 +0000
commit891b6e885e8ff6692f8be695e830a929b97172ab (patch)
tree28e894b8a9d27dfbd681424217f31e84b43ea31c
parent876da7fb748d988a367c7957bbb17a0b0733d290 (diff)
downloadcygnal-891b6e885e8ff6692f8be695e830a929b97172ab.tar.gz
cygnal-891b6e885e8ff6692f8be695e830a929b97172ab.tar.bz2
cygnal-891b6e885e8ff6692f8be695e830a929b97172ab.zip
* hookapi.cc (ld_preload): Call LoadLibraryW.
* path.h (path_conv::get_wide_win32_path_len): Define.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/hookapi.cc3
-rw-r--r--winsup/cygwin/path.h6
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; }