Cleaned up load_library_as_datafile().

diff --git a/loader/module.c b/loader/module.c
index 95207b7..24ed16b 100644
--- a/loader/module.c
+++ b/loader/module.c
@@ -984,47 +984,32 @@
 
 /******************************************************************
  *		load_library_as_datafile
- *
- *
  */
-static BOOL load_library_as_datafile(const void* name, BOOL unicode, HMODULE* hmod)
+static BOOL load_library_as_datafile( LPCWSTR name, HMODULE* hmod)
 {
+    static const WCHAR dotDLL[] = {'.','d','l','l',0};
+
+    WCHAR filenameW[MAX_PATH];
     HANDLE hFile = INVALID_HANDLE_VALUE;
     HANDLE mapping;
-    
+
     *hmod = 0;
 
-    if (unicode)
+    if (SearchPathW( NULL, (LPCWSTR)name, dotDLL, sizeof(filenameW) / sizeof(filenameW[0]),
+                     filenameW, NULL ))
     {
-        WCHAR filenameW[MAX_PATH];
-static  WCHAR dotDLL[] = {'.','d','l','l',0};
-
-        if (SearchPathW( NULL, (LPCWSTR)name, dotDLL, sizeof(filenameW) / sizeof(filenameW[0]), filenameW, NULL ))
-        {
-            hFile = CreateFileW( filenameW, GENERIC_READ, FILE_SHARE_READ,
-                                 NULL, OPEN_EXISTING, 0, 0 );
-        }
+        hFile = CreateFileW( filenameW, GENERIC_READ, FILE_SHARE_READ,
+                             NULL, OPEN_EXISTING, 0, 0 );
     }
-    else
-    {
-        char filenameA[MAX_PATH];
-
-        if (SearchPathA( NULL, (const char*)name, ".dll", sizeof(filenameA), filenameA, NULL ))
-        {
-            hFile = CreateFileA( filenameA, GENERIC_READ, FILE_SHARE_READ,
-                                 NULL, OPEN_EXISTING, 0, 0 );
-        }
-    }
-
     if (hFile == INVALID_HANDLE_VALUE) return FALSE;
     switch (MODULE_GetBinaryType( hFile ))
     {
     case BINARY_PE_EXE:
     case BINARY_PE_DLL:
-        mapping = CreateFileMappingA( hFile, NULL, PAGE_READONLY, 0, 0, NULL );
+        mapping = CreateFileMappingW( hFile, NULL, PAGE_READONLY, 0, 0, NULL );
         if (mapping)
         {
-            *hmod = (HMODULE)MapViewOfFile( mapping, FILE_MAP_READ, 0, 0, 0 );
+            *hmod = MapViewOfFile( mapping, FILE_MAP_READ, 0, 0, 0 );
             CloseHandle( mapping );
         }
         break;
@@ -1056,19 +1041,22 @@
         SetLastError(ERROR_INVALID_PARAMETER);
         return 0;
     }
+    RtlCreateUnicodeStringFromAsciiz( &wstr, libname );
 
     if (flags & LOAD_LIBRARY_AS_DATAFILE)
     {
-        /* The method in load_library_as_datafile allows searching for the 
-         * 'native' libraries only 
+        /* The method in load_library_as_datafile allows searching for the
+         * 'native' libraries only
          */
-        if (load_library_as_datafile(libname, FALSE, &hModule))
+        if (load_library_as_datafile( wstr.Buffer, &hModule))
+        {
+            RtlFreeUnicodeString( &wstr );
             return (HMODULE)((ULONG_PTR)hModule + 1);
+        }
         flags |= DONT_RESOLVE_DLL_REFERENCES; /* Just in case */
         /* Fallback to normal behaviour */
     }
 
-    RtlCreateUnicodeStringFromAsciiz( &wstr, libname );
     nts = LdrLoadDll(NULL, flags, &wstr, &hModule);
     if (nts != STATUS_SUCCESS)
     {
@@ -1097,10 +1085,10 @@
 
     if (flags & LOAD_LIBRARY_AS_DATAFILE)
     {
-        /* The method in load_library_as_datafile allows searching for the 
-         * 'native' libraries only 
+        /* The method in load_library_as_datafile allows searching for the
+         * 'native' libraries only
          */
-        if (load_library_as_datafile(libnameW, TRUE, &hModule))
+        if (load_library_as_datafile(libnameW, &hModule))
             return (HMODULE)((ULONG_PTR)hModule + 1);
         flags |= DONT_RESOLVE_DLL_REFERENCES; /* Just in case */
         /* Fallback to normal behaviour */