mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 937496 - Check if libudev already loaded before trying to load symbols from it; r=ted
This commit is contained in:
parent
deb33a30a9
commit
6eeb0d3c51
@ -30,13 +30,27 @@ class udev_lib {
|
||||
// symbols this code relies on, per:
|
||||
// https://lists.fedoraproject.org/pipermail/devel/2012-June/168227.html
|
||||
const char* lib_names[] = {"libudev.so.0", "libudev.so.1"};
|
||||
// Check whether a library is already loaded so we don't load two
|
||||
// conflicting libs.
|
||||
for (unsigned i = 0; i < ArrayLength(lib_names); i++) {
|
||||
lib = dlopen(lib_names[i], RTLD_LAZY | RTLD_GLOBAL);
|
||||
if (lib)
|
||||
lib = dlopen(lib_names[i], RTLD_NOLOAD | RTLD_LAZY | RTLD_GLOBAL);
|
||||
if (lib) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (lib && LoadSymbols())
|
||||
// If nothing loads the first time through, it means no version of libudev
|
||||
// was already loaded.
|
||||
if (!lib) {
|
||||
for (unsigned i = 0; i < ArrayLength(lib_names); i++) {
|
||||
lib = dlopen(lib_names[i], RTLD_LAZY | RTLD_GLOBAL);
|
||||
if (lib) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (lib && LoadSymbols()) {
|
||||
udev = udev_new();
|
||||
}
|
||||
}
|
||||
|
||||
~udev_lib() {
|
||||
|
Loading…
Reference in New Issue
Block a user