diff options
author | Tim Janik <timj@gtk.org> | 2000-03-01 04:57:07 +0000 |
---|---|---|
committer | Tim Janik <timj@src.gnome.org> | 2000-03-01 04:57:07 +0000 |
commit | 5991248acf6010a95c0e9f2666ee19cd8fd7ccd1 (patch) | |
tree | 9b40ba2267d0bcbf56cf6f7c5a6cc6a2496b7b24 /gmodule | |
parent | cb1db9b8daf9eaa2db8801098e569939625be01f (diff) | |
download | glib-5991248acf6010a95c0e9f2666ee19cd8fd7ccd1.tar.gz |
do not return NULL symbols.
Wed Mar 1 05:34:47 2000 Tim Janik <timj@gtk.org>
* gmodule-beos.c (_g_module_symbol): do not return NULL symbols.
* gmodule-os2.c: removed NetBSD specific defines.
(_g_module_self): set an error message for unsupported behaviour.
* gmodule-beos.c: many coding style fixups.
(_g_module_open):
(_g_module_self):
(_g_module_close):
(_g_module_symbol): bunch of memory leaks plugged.
* gmodule-dl.c: make sure the error message returned from dlerror()
is always != NULL, by using a wrapper function fetch_dlerror(). based
on a patch to fix _g_module_symbol() for NetBSD from Scott Presnell
<srp@zgi.com>.
* gmodule-dld.c: minor indentation.
* gmodule-win32.c: minor cleanups.
* merges from glib-1-2.
Diffstat (limited to 'gmodule')
-rw-r--r-- | gmodule/gmodule-win32.c | 43 | ||||
-rw-r--r-- | gmodule/gmodule.c | 21 | ||||
-rw-r--r-- | gmodule/libgplugin_a.c | 12 | ||||
-rw-r--r-- | gmodule/libgplugin_b.c | 10 |
4 files changed, 58 insertions, 28 deletions
diff --git a/gmodule/gmodule-win32.c b/gmodule/gmodule-win32.c index 792a6b06d..8d021e109 100644 --- a/gmodule/gmodule-win32.c +++ b/gmodule/gmodule-win32.c @@ -1,5 +1,7 @@ /* GMODULE - GLIB wrapper code for dynamic module loading - * Copyright (C) 1998 Tim Janik + * Copyright (C) 1998, 2000 Tim Janik + * + * WIN32 GMODULE implementation * Copyright (C) 1998 Tor Lillqvist * * This library is free software; you can redistribute it and/or @@ -34,17 +36,17 @@ /* --- functions --- */ static gpointer -_g_module_open (const gchar *file_name, - gboolean bind_lazy) +_g_module_open (const gchar *file_name, + gboolean bind_lazy) { HINSTANCE handle; handle = LoadLibrary (file_name); if (!handle) { - char error[100]; - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError (), - 0, error, sizeof (error), NULL); + gchar error[100]; + + sprintf (error, "Error code %d", GetLastError ()); g_module_set_error (error); } @@ -59,9 +61,9 @@ _g_module_self (void) handle = GetModuleHandle (NULL); if (!handle) { - char error[100]; - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError (), - 0, error, sizeof (error), NULL); + gchar error[100]; + + sprintf (error, "Error code %d", GetLastError ()); g_module_set_error (error); } @@ -69,32 +71,33 @@ _g_module_self (void) } static void -_g_module_close (gpointer handle, - gboolean is_unref) +_g_module_close (gpointer handle, + gboolean is_unref) { if (!FreeLibrary (handle)) { - char error[100]; - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError (), - 0, error, sizeof (error), NULL); + gchar error[100]; + + sprintf (error, "Error code %d", GetLastError ()); g_module_set_error (error); } } static gpointer -_g_module_symbol (gpointer handle, - const gchar *symbol_name) +_g_module_symbol (gpointer handle, + const gchar *symbol_name) { gpointer p; p = GetProcAddress (handle, symbol_name); if (!p) { - char error[100]; - FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError (), - 0, error, sizeof (error), NULL); + gchar error[100]; + + sprintf (error, "Error code %d", GetLastError ()); g_module_set_error (error); } + return p; } @@ -103,7 +106,7 @@ _g_module_build_path (const gchar *directory, const gchar *module_name) { gint k; - + k = strlen (module_name); if (directory && *directory) if (k > 4 && g_strcasecmp (module_name + k - 4, ".dll") == 0) diff --git a/gmodule/gmodule.c b/gmodule/gmodule.c index 0a4b211c0..dcd04dd95 100644 --- a/gmodule/gmodule.c +++ b/gmodule/gmodule.c @@ -134,10 +134,6 @@ g_module_set_error (const gchar *error) #include "gmodule-dld.c" #elif (G_MODULE_IMPL == G_MODULE_IMPL_WIN32) #include "gmodule-win32.c" -#elif (G_MODULE_IMPL == G_MODULE_IMPL_OS2) -#include "gmodule-os2.c" -#elif (G_MODULE_IMPL == G_MODULE_IMPL_BEOS) -#include "gmodule-beos.c" #else #undef SUPPORT_OR_RETURN #define SUPPORT_OR_RETURN(rv) { g_module_set_error ("dynamic modules are " \ @@ -172,6 +168,17 @@ _g_module_build_path (const gchar *directory, } #endif /* no implementation */ +#if defined (NATIVE_WIN32) && defined (__LCC__) +int __stdcall +LibMain (void *hinstDll, + unsigned long dwReason, + void *reserved) +{ + return 1; +} +#endif /* NATIVE_WIN32 && __LCC__ */ + + /* --- functions --- */ gboolean g_module_supported (void) @@ -256,8 +263,7 @@ g_module_open (const gchar *file_name, /* check initialization */ if (g_module_symbol (module, "g_module_check_init", (gpointer) &check_init)) - if (check_init) - check_failed = check_init (module); + check_failed = check_init (module); /* we don't call unload() if the initialization check failed. */ if (!check_failed) @@ -376,7 +382,7 @@ g_module_symbol (GModule *module, *symbol = _g_module_symbol (module->handle, symbol_name); #endif /* !G_MODULE_NEED_USCORE */ - module_error = g_module_error(); + module_error = g_module_error (); if (module_error) { gchar *error; @@ -385,6 +391,7 @@ g_module_symbol (GModule *module, g_module_set_error (error); g_free (error); *symbol = NULL; + return FALSE; } diff --git a/gmodule/libgplugin_a.c b/gmodule/libgplugin_a.c index d6f5bb514..3da2da4a3 100644 --- a/gmodule/libgplugin_a.c +++ b/gmodule/libgplugin_a.c @@ -27,6 +27,16 @@ #include <gmodule.h> #include <stdlib.h> +#if defined (NATIVE_WIN32) && defined (__LCC__) +int __stdcall +LibMain(void *hinstDll, + unsigned long dwReason, + void *reserved) +{ + return 1; +} +#endif /* NATIVE_WIN32 && __LCC__ */ + G_MODULE_EXPORT void gplugin_a_func (void) { @@ -54,7 +64,7 @@ gplugin_say_boo_func (void) G_MODULE_EXPORT void gplugin_a_module_func (GModule *module) { - void(*f)(void) = NULL; + void (*f) (void) = NULL; gchar *string; string = "gplugin_say_boo_func"; diff --git a/gmodule/libgplugin_b.c b/gmodule/libgplugin_b.c index be2795b66..109e04853 100644 --- a/gmodule/libgplugin_b.c +++ b/gmodule/libgplugin_b.c @@ -26,6 +26,16 @@ #include <gmodule.h> +#if defined (NATIVE_WIN32) && defined (__LCC__) +int __stdcall +LibMain(void *hinstDll, + unsigned long dwReason, + void *reserved) +{ + return 1; +} +#endif /* NATIVE_WIN32 && __LCC__ */ + G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module) { |