[PATCH 1/5] services: Fall back to the current architecture if GetBinaryType fails.

Zebediah Figura z.figura12 at gmail.com
Mon Apr 30 13:59:54 CDT 2018


This allows loading a test DLL on Wine.

Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
 programs/services/services.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/programs/services/services.c b/programs/services/services.c
index eba98d6..1973d27 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -723,7 +723,7 @@ static DWORD get_service_binary_path(const struct service_entry *service_entry,
     return ERROR_SUCCESS;
 }
 
-static DWORD get_winedevice_binary_path(WCHAR **path, BOOL *is_wow64)
+static DWORD get_winedevice_binary_path(struct service_entry *service_entry, WCHAR **path, BOOL *is_wow64)
 {
     static const WCHAR winedeviceW[] = {'\\','w','i','n','e','d','e','v','i','c','e','.','e','x','e',0};
     WCHAR system_dir[MAX_PATH];
@@ -734,7 +734,7 @@ static DWORD get_winedevice_binary_path(WCHAR **path, BOOL *is_wow64)
     else if (GetBinaryTypeW(*path, &type))
         *is_wow64 = (type == SCS_32BIT_BINARY);
     else
-        return GetLastError();
+        *is_wow64 = service_entry->is_wow64;
 
     GetSystemDirectoryW(system_dir, MAX_PATH);
     HeapFree(GetProcessHeap(), 0, *path);
@@ -857,7 +857,7 @@ static DWORD service_start_process(struct service_entry *service_entry, struct p
         struct service_entry *winedevice_entry;
         WCHAR *group;
 
-        if ((err = get_winedevice_binary_path(&path, &is_wow64)))
+        if ((err = get_winedevice_binary_path(service_entry, &path, &is_wow64)))
         {
             service_unlock(service_entry);
             HeapFree(GetProcessHeap(), 0, path);
-- 
2.7.4




More information about the wine-devel mailing list