RFR: 8307145: windowsaccessbridge.dll is missing 4 critical methods in its C API
Daniel Jeliński
djelinski at openjdk.org
Fri May 5 15:00:20 UTC 2023
On Sat, 29 Apr 2023 19:26:00 GMT, Julian Waters <jwaters at openjdk.org> wrote:
> In windowsaccessbridge(-64).dll the following methods are exported in a def file to C API which in turn call their real implementation, which are instance methods of the class WinAccessBridge:
>
> addJavaEventNotification
> removeJavaEventNotification
> addAccessibilityEventNotification
> removeAccessibilityEventNotification
>
>
> However, they are nowhere to be seen in the actual C interface, in AccessBridgeWindowsEntryPoints.cpp. Your guess is as good as mine as to how on earth MSVC is still capable of compiling and linking this without any errors whatsoever, but in any case, this is a severe oversight and should be properly defined in the C API lest this happy accident within MSVC is fixed by Microsoft in the future
FWIW, this is what dumpbin displays for these entries:
1 2 0000351C addAccessibilityEventNotification = ?addAccessibilityEventNotification at WinAccessBridge@@QEAAX_J at Z (public: void __cdecl WinAccessBridge::addAccessibilityEventNotification(__int64))
2 4 00003628 addJavaEventNotification = ?addJavaEventNotification at WinAccessBridge@@QEAAX_J at Z (public: void __cdecl WinAccessBridge::addJavaEventNotification(__int64))
3 42 00006D94 removeAccessibilityEventNotification = ?removeAccessibilityEventNotification at WinAccessBridge@@QEAAX_J at Z (public: void __cdecl WinAccessBridge::removeAccessibilityEventNotification(__int64))
4 44 00006EA0 removeJavaEventNotification = ?removeJavaEventNotification at WinAccessBridge@@QEAAX_J at Z (public: void __cdecl WinAccessBridge::removeJavaEventNotification(__int64))
There's no way to get a pointer to an instance of `WinAccessBridge` using the supported interface, and calling these methods with garbage value for `this` would likely crash.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/13734#issuecomment-1536386059
More information about the client-libs-dev
mailing list