https://bugs.winehq.org/show_bug.cgi?id=48620
--- Comment #8 from Leonid Yuriev leo@yuriev.ru --- (In reply to Anastasius Focht from comment #7)
Hello folks,
filling some fields and confirming.
Thanks a lot.
This results in auto-generated stub ('GetProcAddress' will return non-NULL). Any call of the function pointer will result in a crash, accompanied with infamous 'unimplemented function foobar' message.
My last question:
- Will the following trick work to determine a stub? i.e. is the stub code single and shared for all not implemented functions?
- Otherwise, what other workaround can I use for old Wine versions?
--- snip --- mdbx_NtExtendSection = (MDBX_NtExtendSection)GetProcAddress(hNtdll, "NtExtendSection");
/* Workaround for Wine. * erthink: I assume that ZwCallbackReturn in Wine will always be a stub * function or (at least) will be implemented after NtExtendSection). * So, this check allows us to determine NtExtendSection is a stub and * must not be used. */ const void *unimplemented_stub = GetProcAddress(hNtdll, "ZwCallbackReturn"); if (mdbx_NtExtendSection == unimplemented_stub) mdbx_NtExtendSection = NULL; --- snip ---