do not return NULL symbols.
authorTim Janik <timj@gtk.org>
Wed, 1 Mar 2000 04:57:07 +0000 (04:57 +0000)
committerTim Janik <timj@src.gnome.org>
Wed, 1 Mar 2000 04:57:07 +0000 (04:57 +0000)
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.

gmodule/gmodule-win32.c
gmodule/gmodule.c
gmodule/libgplugin_a.c
gmodule/libgplugin_b.c

index 792a6b0..8d021e1 100644 (file)
@@ -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
 
 /* --- 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)
index 0a4b211..dcd04dd 100644 (file)
@@ -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;
     }
   
index d6f5bb5..3da2da4 100644 (file)
 #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";
index be2795b..109e048 100644 (file)
 
 #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)
 {