summaryrefslogtreecommitdiff
path: root/src/drivers/Posix
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Posix')
-rw-r--r--src/drivers/Posix/Fl_Posix_System_Driver.cxx10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/drivers/Posix/Fl_Posix_System_Driver.cxx b/src/drivers/Posix/Fl_Posix_System_Driver.cxx
index 0fa037b42..a05781d1b 100644
--- a/src/drivers/Posix/Fl_Posix_System_Driver.cxx
+++ b/src/drivers/Posix/Fl_Posix_System_Driver.cxx
@@ -47,13 +47,17 @@
#if HAVE_DLFCN_H
-static void* double_dlopen(const char *filename1)
+static void* triple_dlopen(const char *filename1)
{
void *ptr = ::dlopen(filename1, RTLD_LAZY | RTLD_GLOBAL);
if (!ptr) {
char filename2[FL_PATH_MAX];
- sprintf(filename2, "%s.0", filename1);
+ sprintf(filename2, "%s.1", filename1);
ptr = dlopen(filename2, RTLD_LAZY | RTLD_GLOBAL);
+ if (!ptr) {
+ sprintf(filename2, "%s.0", filename1);
+ ptr = dlopen(filename2, RTLD_LAZY | RTLD_GLOBAL);
+ }
}
return ptr;
}
@@ -63,7 +67,7 @@ void *Fl_Posix_System_Driver::dlopen(const char *filename)
{
void *ptr = NULL;
#if HAVE_DLFCN_H
- ptr = double_dlopen(filename);
+ ptr = triple_dlopen(filename);
# ifdef __APPLE_CC__ // allows testing on Darwin + XQuartz + fink
if (!ptr) {
char *f_dylib = (char*)malloc(strlen(filename)+7);