diff options
Diffstat (limited to 'Source/WebCore/plugins/gtk/PluginPackageGtk.cpp')
-rw-r--r-- | Source/WebCore/plugins/gtk/PluginPackageGtk.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/Source/WebCore/plugins/gtk/PluginPackageGtk.cpp b/Source/WebCore/plugins/gtk/PluginPackageGtk.cpp index 21d3c9e..ab8eb57 100644 --- a/Source/WebCore/plugins/gtk/PluginPackageGtk.cpp +++ b/Source/WebCore/plugins/gtk/PluginPackageGtk.cpp @@ -119,6 +119,17 @@ static int webkitgtkXError(Display* xdisplay, XErrorEvent* error) } #endif +static bool moduleMixesGtkSymbols(GModule* module) +{ + gpointer symbol; +#ifdef GTK_API_VERSION_2 + return g_module_symbol(module, "gtk_application_get_type", &symbol); +#else + return g_module_symbol(module, "gtk_object_get_type", &symbol); +#endif +} + + bool PluginPackage::load() { if (m_isLoaded) { @@ -150,6 +161,12 @@ bool PluginPackage::load() return false; } + if (moduleMixesGtkSymbols(m_module)) { + LOG(Plugins, "Module '%s' mixes GTK+ 2 and GTK+ 3 symbols, ignoring plugin.\n", m_path.utf8().data()); + g_module_close(m_module); + return false; + } + m_isLoaded = true; #if defined(XP_UNIX) |