diff options
author | Patrick Griffis <pgriffis@igalia.com> | 2021-11-17 11:52:34 -0600 |
---|---|---|
committer | Patrick Griffis <pgriffis@igalia.com> | 2021-11-17 11:52:34 -0600 |
commit | e7f842c35e97e9dd2d96445b90fc64c0ba871244 (patch) | |
tree | a0e16c567bd3a6de618425595fb14ac2a221f42a | |
parent | 0e1d3eee74cc568aa077b3472e7fcd3f13d42007 (diff) | |
download | libsoup-e7f842c35e97e9dd2d96445b90fc64c0ba871244.tar.gz |
Error when libsoup3 is detected as already loaded in the same process
Companion to 9596a869414bb0811f1e1f6009c950ca7af81189
See !211
-rw-r--r-- | libsoup/soup-init.c | 19 | ||||
-rw-r--r-- | meson.build | 4 |
2 files changed, 22 insertions, 1 deletions
diff --git a/libsoup/soup-init.c b/libsoup/soup-init.c index c4950ced..2155e9d4 100644 --- a/libsoup/soup-init.c +++ b/libsoup/soup-init.c @@ -10,6 +10,7 @@ #endif #include <glib/gi18n-lib.h> +#include <gmodule.h> #include "gconstructor.h" #ifdef G_OS_WIN32 @@ -19,6 +20,21 @@ HMODULE soup_dll; #endif +static gboolean +soup3_is_loaded (void) +{ + GModule *module = g_module_open (NULL, 0); + gpointer func; + gboolean result = FALSE; + + if (g_module_symbol (module, "soup_date_time_new_from_http_string", &func)) + result = TRUE; + + g_module_close (module); + + return result; +} + static void soup_init (void) { @@ -34,6 +50,9 @@ soup_init (void) #ifdef HAVE_BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); #endif + + if (soup3_is_loaded ()) + g_error ("libsoup3 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported."); } #if defined (G_OS_WIN32) diff --git a/meson.build b/meson.build index fc284848..707eb0d5 100644 --- a/meson.build +++ b/meson.build @@ -83,12 +83,14 @@ add_project_arguments(common_flags, language : 'c') glib_required_version = '>= 2.58' glib_dep = dependency('glib-2.0', version : glib_required_version, fallback: ['glib', 'libglib_dep']) +gmodule_dep = dependency('gmodule-2.0', version : glib_required_version, + fallback: ['glib', 'libgmodule_dep']) gobject_dep = dependency('gobject-2.0', version : glib_required_version, fallback: ['glib', 'libgobject_dep']) gio_dep = dependency('gio-2.0', version : glib_required_version, fallback: ['glib', 'libgio_dep']) -glib_deps = [glib_dep, gobject_dep, gio_dep] +glib_deps = [glib_dep, gmodule_dep, gobject_dep, gio_dep] sqlite_dep = dependency('sqlite3', required: false) |