Call NP_GetEntryPoints before NP_Initialize on Windows
authoraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Aug 2010 18:12:47 +0000 (18:12 +0000)
committeraroben@apple.com <aroben@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Aug 2010 18:12:47 +0000 (18:12 +0000)
commiteeff5ecb2f4cdc08917b1973fb97bf50ea13ae69
tree45d78a15451d73b6d9f830eaa042c4771fe63035
parentbe02f0aec8b8a703c9e0762c50b3505d71d2a98b
Call NP_GetEntryPoints before NP_Initialize on Windows

Doing otherwise will cause Flash and QuickTime to crash inside
NP_Initialize.

Fixes <http://webkit.org/b/44270> <rdar://problem/8330393> Crash in
NP_Initialize when loading QuickTime when running
plugins/embed-attributes-setting.html in WebKit2 on Windows

Reviewed by John Sullivan.

WebKit2:

* WebProcess/Plugins/Netscape/NetscapePluginModule.cpp:
(WebKit::NetscapePluginModule::tryLoad): On Windows, first call
NP_GetEntryPoints, then NP_Initialize. Do the reverse on Mac to
prevent Silverlight (e.g.) from crashing (see r38858).

WebKitTools:

Test that NP_Initialize and NP_GetEntryPoints are called in the
correct order

The order differs between Mac and Windows (see r38858).

* DumpRenderTree/TestNetscapePlugIn/main.cpp: Added a CRASH macro and
a boolean to record whether NP_GetEntryPoints has been called.
(NP_Initialize): Crash on Windows if NP_GetEntryPoints hasn't been
called yet. This matches Flash and QuickTime's behavior.
(NP_GetEntryPoints): Crash on Mac if NP_Initialize hasn't been called
yet. This matches Silverlight's behavior.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@66025 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit2/ChangeLog
WebKit2/WebProcess/Plugins/Netscape/NetscapePluginModule.cpp
WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/TestNetscapePlugIn/main.cpp