Hi,
There was an error report on the Debian bug tracking system
that lt_dlopenext() sets an error on succesful loading the library
if no extention was given. See:
http://bugs.debian.org/510006
Here are the patches I've made for both the 1.5 and 2.2 branch.
PS: Can somebody fix the example in autobook?
Kurt
diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c
index b747b70..e619c94 100644
--- a/libltdl/ltdl.c
+++ b/libltdl/ltdl.c
@@ -3491,6 +3491,9 @@ lt_dlopenext (filename)
char * ext = 0;
size_t len;
int errors = 0;
+ const char * saved_error = 0;
+
+ LT_DLMUTEX_GETERROR (saved_error);
if (!filename)
{
@@ -3534,6 +3537,7 @@ lt_dlopenext (filename)
}
#ifdef LTDL_SHLIB_EXT
+ LT_DLMUTEX_SETERROR (saved_error);
/* Try appending SHLIB_EXT. */
if (LT_STRLEN (shlib_ext) > LT_STRLEN (archive_ext))
{
diff --git a/libltdl/ltdl.c b/libltdl/ltdl.c
index 6e19599..80b5675 100644
--- a/libltdl/ltdl.c
+++ b/libltdl/ltdl.c
@@ -1614,6 +1614,9 @@ lt_dlopenadvise (const char *filename, lt_dladvise advise)
{
lt_dlhandle handle = 0;
int errors = 0;
+ const char * saved_error = 0;
+
+ LT__GETERROR (saved_error);
/* Can't have symbols hidden and visible at the same time! */
if (advise && advise->is_symlocal && advise->is_symglobal)
@@ -1650,6 +1653,7 @@ lt_dlopenadvise (const char *filename, lt_dladvise advise)
#if defined(LT_MODULE_EXT)
/* Try appending SHLIB_EXT. */
+ LT__SETERRORSTR (saved_error);
errors = try_dlopen (&handle, filename, shlib_ext, advise);
/* As before, if the file was found but loading failed, return now