[PATCH] ntdll: Failure callback is optional in LdrResolveDelayLoadedAPI()
Nikolay Sivov
nsivov at codeweavers.com
Thu Oct 5 03:16:31 CDT 2017
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/kernel32/tests/loader.c | 11 +++++++++++
dlls/ntdll/loader.c | 3 +++
2 files changed, 14 insertions(+)
diff --git a/dlls/kernel32/tests/loader.c b/dlls/kernel32/tests/loader.c
index 1f6f317676..207e874f7c 100644
--- a/dlls/kernel32/tests/loader.c
+++ b/dlls/kernel32/tests/loader.c
@@ -3006,6 +3006,17 @@ static void test_ResolveDelayLoadedAPI(void)
ok(ret == (void*)0xdeadbeef, "Test %u: ResolveDelayLoadedAPI succeeded with %p\n", i, ret);
ok(cb_count, "Test %u: Wrong callback count: %d\n", i, cb_count);
}
+
+ ret = pResolveDelayLoadedAPI(hlib, delaydir, NULL, NULL, &itda[i], 0);
+ if (td[i].succeeds)
+ {
+ ok(ret != NULL, "Test %u: ResolveDelayLoadedAPI failed.\n", i);
+ ok(ret == load, "Test %u: expected %p, got %p.\n", i, load, ret);
+ ok(ret == (void *)itda[i].u1.AddressOfData, "Test %u: expected %p, got %p\n",
+ i, ret, (void *)itda[i].u1.AddressOfData);
+ }
+ else
+ ok(ret == NULL, "Test %u: unexpected return value %p.\n", i, ret);
}
delaydir++;
}
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
index 9c89d57154..187828c010 100644
--- a/dlls/ntdll/loader.c
+++ b/dlls/ntdll/loader.c
@@ -2761,6 +2761,9 @@ void* WINAPI LdrResolveDelayLoadedAPI( void* base, const IMAGE_DELAYLOAD_DESCRIP
}
fail:
+ if (!dllhook)
+ return NULL;
+
delayinfo.Size = sizeof(delayinfo);
delayinfo.DelayloadDescriptor = desc;
delayinfo.ThunkAddress = addr;
--
2.14.2
More information about the wine-patches
mailing list