summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/plugins/gtk/PluginPackageGtk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/plugins/gtk/PluginPackageGtk.cpp')
-rw-r--r--Source/WebCore/plugins/gtk/PluginPackageGtk.cpp17
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)