[vlc-devel] commit: GetSymbol: adding a leading underscore is NOT correct on _all_ OSes ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sat Jan 10 14:07:06 CET 2009
vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Sat Jan 10 15:00:55 2009 +0200| [b8faf36e58cc0a7f9a4d6e1d1f86fdf076aebbe3] | committer: Rémi Denis-Courmont
GetSymbol: adding a leading underscore is NOT correct on _all_ OSes
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b8faf36e58cc0a7f9a4d6e1d1f86fdf076aebbe3
---
src/modules/os.c | 44 ++++++++++++++------------------------------
1 files changed, 14 insertions(+), 30 deletions(-)
diff --git a/src/modules/os.c b/src/modules/os.c
index 997e780..a34540b 100644
--- a/src/modules/os.c
+++ b/src/modules/os.c
@@ -70,7 +70,7 @@
* Local prototypes
*****************************************************************************/
#ifdef HAVE_DYNAMIC_PLUGINS
-static void * GetSymbol ( module_handle_t, const char * );
+static void *module_Lookup( module_handle_t, const char * );
#if defined(HAVE_DL_WINDOWS)
static char * GetWindowsError ( void );
@@ -90,7 +90,8 @@ int module_Call( vlc_object_t *obj, module_t *p_module )
int (* pf_symbol) ( module_t * p_module );
/* Try to resolve the symbol */
- pf_symbol = (int (*)(module_t *)) GetSymbol( p_module->handle, psz_name );
+ pf_symbol = (int (*)(module_t *)) module_Lookup( p_module->handle,
+ psz_name );
if( pf_symbol == NULL )
{
@@ -287,41 +288,24 @@ void module_Unload( module_handle_t handle )
}
/**
- * GetSymbol: get a symbol from a dynamic library
+ * Looks up a symbol from a dynamically loaded library
*
* This function queries a loaded library for a symbol specified in a
* string, and returns a pointer to it. We don't check for dlerror() or
* similar functions, since we want a non-NULL symbol anyway.
- * \param handle handle to the module
- * \param psz_function function name
- * \return nothing
+ *
+ * @param handle handle to the module
+ * @param psz_function function name
+ * @return NULL on error, or the address of the symbol
*/
-static void * _module_getsymbol( module_handle_t, const char * );
-
-static void * GetSymbol( module_handle_t handle, const char * psz_function )
-{
- void * p_symbol = _module_getsymbol( handle, psz_function );
-
- /* MacOS X dl library expects symbols to begin with "_". So do
- * some other operating systems. That's really lame, but hey, what
- * can we do ? */
- if( p_symbol == NULL )
- {
- char psz_call[strlen( psz_function ) + 2];
-
- psz_call[ 0 ] = '_';
- memcpy( psz_call + 1, psz_function, sizeof (psz_call) - 1 );
- p_symbol = _module_getsymbol( handle, psz_call );
- }
-
- return p_symbol;
-}
-
-static void * _module_getsymbol( module_handle_t handle,
- const char * psz_function )
+static void *module_Lookup( module_handle_t handle, const char *psz_function )
{
#if defined(HAVE_DL_DYLD)
- NSSymbol sym = NSLookupSymbolInModule( handle, psz_function );
+ char psz_call[strlen( psz_function ) + 2];
+ psz_call[0] = '_';
+ memcpy( psz_call + 1, psz_function, sizeof( psz_call ) - 1 );
+
+ NSSymbol sym = NSLookupSymbolInModule( handle, psz_call );
return NSAddressOfSymbol( sym );
#elif defined(HAVE_DL_BEOS)
More information about the vlc-devel
mailing list