--- xmlsec-ltdl.h 2003-09-11 16:57:58.000000000 -0700 +++ xmlsec-ltdl.h 2003-09-11 16:59:24.000000000 -0700 @@ -76,7 +76,7 @@ /* LT_CONC creates a new concatenated symbol for the compiler in a portable way. */ -#if defined(__STDC__) || defined(__cplusplus) +#if defined(__STDC__) || defined(__cplusplus) || defined(_MSC_VER) # define LT_CONC(s,t) s##t #else # define LT_CONC(s,t) s/**/t @@ -143,25 +143,25 @@ typedef struct xmlsec_lt_dlhandle_struct *xmlsec_lt_dlhandle; /* A loaded module. */ /* Initialisation and finalisation functions for libltdl. */ -extern int xmlsec_lt_dlinit LT_PARAMS((void)); -extern int xmlsec_lt_dlexit LT_PARAMS((void)); +LT_SCOPE int xmlsec_lt_dlinit LT_PARAMS((void)); +LT_SCOPE int xmlsec_lt_dlexit LT_PARAMS((void)); /* Module search path manipultation. */ -extern int xmlsec_lt_dladdsearchdir LT_PARAMS((const char *search_dir)); -extern int xmlsec_lt_dlsetsearchpath LT_PARAMS((const char *search_path)); -extern const char *xmlsec_lt_dlgetsearchpath LT_PARAMS((void)); +LT_SCOPE int xmlsec_lt_dladdsearchdir LT_PARAMS((const char *search_dir)); +LT_SCOPE int xmlsec_lt_dlsetsearchpath LT_PARAMS((const char *search_path)); +LT_SCOPE const char *xmlsec_lt_dlgetsearchpath LT_PARAMS((void)); /* Portable libltdl versions of the system dlopen() API. */ -extern xmlsec_lt_dlhandle xmlsec_lt_dlopen LT_PARAMS((const char *filename)); -extern xmlsec_lt_dlhandle xmlsec_lt_dlopenext LT_PARAMS((const char *filename)); -extern xmlsec_lt_ptr xmlsec_lt_dlsym LT_PARAMS((xmlsec_lt_dlhandle handle, +LT_SCOPE xmlsec_lt_dlhandle xmlsec_lt_dlopen LT_PARAMS((const char *filename)); +LT_SCOPE xmlsec_lt_dlhandle xmlsec_lt_dlopenext LT_PARAMS((const char *filename)); +LT_SCOPE xmlsec_lt_ptr xmlsec_lt_dlsym LT_PARAMS((xmlsec_lt_dlhandle handle, const char *name)); -extern const char *xmlsec_lt_dlerror LT_PARAMS((void)); -extern int xmlsec_lt_dlclose LT_PARAMS((xmlsec_lt_dlhandle handle)); +LT_SCOPE const char *xmlsec_lt_dlerror LT_PARAMS((void)); +LT_SCOPE int xmlsec_lt_dlclose LT_PARAMS((xmlsec_lt_dlhandle handle)); /* Module residency management. */ -extern int xmlsec_lt_dlmakeresident LT_PARAMS((xmlsec_lt_dlhandle handle)); -extern int xmlsec_lt_dlisresident LT_PARAMS((xmlsec_lt_dlhandle handle)); +LT_SCOPE int xmlsec_lt_dlmakeresident LT_PARAMS((xmlsec_lt_dlhandle handle)); +LT_SCOPE int xmlsec_lt_dlisresident LT_PARAMS((xmlsec_lt_dlhandle handle)); @@ -174,7 +174,7 @@ typedef void xmlsec_lt_dlmutex_seterror LT_PARAMS((const char *error)); typedef const char *xmlsec_lt_dlmutex_geterror LT_PARAMS((void)); -extern int xmlsec_lt_dlmutex_register LT_PARAMS((xmlsec_lt_dlmutex_lock *lock, +LT_SCOPE int xmlsec_lt_dlmutex_register LT_PARAMS((xmlsec_lt_dlmutex_lock *lock, xmlsec_lt_dlmutex_unlock *unlock, xmlsec_lt_dlmutex_seterror *seterror, xmlsec_lt_dlmutex_geterror *geterror)); @@ -202,12 +202,12 @@ xmlsec_lt_ptr address; } xmlsec_lt_dlsymlist; -extern int xmlsec_lt_dlpreload LT_PARAMS((const xmlsec_lt_dlsymlist *preloaded)); -extern int xmlsec_lt_dlpreload_default +LT_SCOPE int xmlsec_lt_dlpreload LT_PARAMS((const xmlsec_lt_dlsymlist *preloaded)); +LT_SCOPE int xmlsec_lt_dlpreload_default LT_PARAMS((const xmlsec_lt_dlsymlist *preloaded)); #define LTDL_SET_PRELOADED_SYMBOLS() LT_STMT_START{ \ - extern const xmlsec_lt_dlsymlist xmlsec_lt_preloaded_symbols[]; \ + LT_SCOPE const xmlsec_lt_dlsymlist xmlsec_lt_preloaded_symbols[]; \ xmlsec_lt_dlpreload_default(xmlsec_lt_preloaded_symbols); \ }LT_STMT_END @@ -225,20 +225,20 @@ number of times xmlsec_lt_dlclosed. */ } xmlsec_lt_dlinfo; -extern const xmlsec_lt_dlinfo *xmlsec_lt_dlgetinfo LT_PARAMS((xmlsec_lt_dlhandle handle)); -extern xmlsec_lt_dlhandle xmlsec_lt_dlhandle_next LT_PARAMS((xmlsec_lt_dlhandle place)); -extern int xmlsec_lt_dlforeach LT_PARAMS(( +LT_SCOPE const xmlsec_lt_dlinfo *xmlsec_lt_dlgetinfo LT_PARAMS((xmlsec_lt_dlhandle handle)); +LT_SCOPE xmlsec_lt_dlhandle xmlsec_lt_dlhandle_next LT_PARAMS((xmlsec_lt_dlhandle place)); +LT_SCOPE int xmlsec_lt_dlforeach LT_PARAMS(( int (*func) (xmlsec_lt_dlhandle handle, xmlsec_lt_ptr data), xmlsec_lt_ptr data)); /* Associating user data with loaded modules. */ typedef unsigned xmlsec_lt_dlcaller_id; -extern xmlsec_lt_dlcaller_id xmlsec_lt_dlcaller_register LT_PARAMS((void)); -extern xmlsec_lt_ptr xmlsec_lt_dlcaller_set_data LT_PARAMS((xmlsec_lt_dlcaller_id key, +LT_SCOPE xmlsec_lt_dlcaller_id xmlsec_lt_dlcaller_register LT_PARAMS((void)); +LT_SCOPE xmlsec_lt_ptr xmlsec_lt_dlcaller_set_data LT_PARAMS((xmlsec_lt_dlcaller_id key, xmlsec_lt_dlhandle handle, xmlsec_lt_ptr data)); -extern xmlsec_lt_ptr xmlsec_lt_dlcaller_get_data LT_PARAMS((xmlsec_lt_dlcaller_id key, +LT_SCOPE xmlsec_lt_ptr xmlsec_lt_dlcaller_get_data LT_PARAMS((xmlsec_lt_dlcaller_id key, xmlsec_lt_dlhandle handle)); @@ -269,15 +269,15 @@ xmlsec_lt_user_data dlloader_data; }; -extern xmlsec_lt_dlloader *xmlsec_lt_dlloader_next LT_PARAMS((xmlsec_lt_dlloader *place)); -extern xmlsec_lt_dlloader *xmlsec_lt_dlloader_find LT_PARAMS(( +LT_SCOPE xmlsec_lt_dlloader *xmlsec_lt_dlloader_next LT_PARAMS((xmlsec_lt_dlloader *place)); +LT_SCOPE xmlsec_lt_dlloader *xmlsec_lt_dlloader_find LT_PARAMS(( const char *loader_name)); -extern const char *xmlsec_lt_dlloader_name LT_PARAMS((xmlsec_lt_dlloader *place)); -extern xmlsec_lt_user_data *xmlsec_lt_dlloader_data LT_PARAMS((xmlsec_lt_dlloader *place)); -extern int xmlsec_lt_dlloader_add LT_PARAMS((xmlsec_lt_dlloader *place, +LT_SCOPE const char *xmlsec_lt_dlloader_name LT_PARAMS((xmlsec_lt_dlloader *place)); +LT_SCOPE xmlsec_lt_user_data *xmlsec_lt_dlloader_data LT_PARAMS((xmlsec_lt_dlloader *place)); +LT_SCOPE int xmlsec_lt_dlloader_add LT_PARAMS((xmlsec_lt_dlloader *place, const struct xmlsec_lt_user_dlloader *dlloader, const char *loader_name)); -extern int xmlsec_lt_dlloader_remove LT_PARAMS(( +LT_SCOPE int xmlsec_lt_dlloader_remove LT_PARAMS(( const char *loader_name)); @@ -319,8 +319,8 @@ }; /* These functions are only useful from inside custom module loaders. */ -extern int xmlsec_lt_dladderror LT_PARAMS((const char *diagnostic)); -extern int xmlsec_lt_dlseterror LT_PARAMS((int errorcode)); +LT_SCOPE int xmlsec_lt_dladderror LT_PARAMS((const char *diagnostic)); +LT_SCOPE int xmlsec_lt_dlseterror LT_PARAMS((int errorcode)); --- xmlsec-ltdl.c.orig 2003-09-11 16:40:14.000000000 -0700 +++ xmlsec-ltdl.c 2006-03-10 11:43:24.000000000 -0800 @@ -3019,7 +3019,12 @@ break; } } - + if(!prev->next) + { + MUTEX_SETERROR (LT_DLSTRERROR (REMOVE_LOADER)); + ++errors; + goto done; + } place = prev->next; prev->next = prev->next->next; }