--- src/gnc-module/gnc-module.c.orig	2008-12-10 12:53:18.000000000 -0800
+++ src/gnc-module/gnc-module.c	2008-12-10 14:00:10.000000000 -0800
@@ -452,6 +452,8 @@
 {
 
   GNCLoadedModule * info;
+  GModule         * gmodule;
+  GNCModuleInfo   * modinfo;
 
   if(!loaded_modules)
   {
@@ -485,65 +487,72 @@
       g_warning ("module has no init func: %s", module_name);
       return NULL;
     }
+    /* NOTREACHED */
+    g_error("internal error");
+    return NULL;
   }
-  else
+
+  modinfo = gnc_module_locate(module_name, iface);
+  if (!modinfo)
   {
-    GNCModuleInfo * modinfo = gnc_module_locate(module_name, iface);
-    GModule       * gmodule;
+    if (optional)
+    {
+      g_message ("Could not locate optional module %s interface v.%d",
+	module_name, iface);
+    }
+    else
+    {
+      g_warning ("Could not locate module %s interface v.%d",
+	module_name, iface);
+    }
+    return NULL;
+  }
 
 /*     if (modinfo) */
 /*       g_debug("(init) loading '%s' from '%s'\n", module_name, */
 /*               modinfo->module_filepath); */
 
-    if (modinfo &&
-        ((gmodule = g_module_open(modinfo->module_filepath, 0))
-         != NULL))
-    {
-      gpointer initfunc;
-
-      if (gnc_module_get_symbol(gmodule, "gnc_module_init", &initfunc))
-      {
-        /* stick it in the hash table */
-        info = g_new0(GNCLoadedModule, 1);
-        info->gmodule    = gmodule;
-        info->filename   = g_strdup(modinfo->module_filepath);
-        info->load_count = 1;
-        info->init_func  = initfunc;
-        g_hash_table_insert(loaded_modules, info, info);
-
-        /* now call its init function.  this should load any dependent
-         * modules, too.  If it doesn't return TRUE unload the module. */
-        if (!info->init_func(0))
-        {
-          /* init failed. unload the module. */
-          g_warning ("Initialization failed for module %s\n", module_name);
-          g_hash_table_remove(loaded_modules, info);
-          g_free(info->filename);
-          g_free(info);
-          /* g_module_close(module); */
-          return NULL;
-        }
+  if ((gmodule = g_module_open(modinfo->module_filepath, 0)) != NULL)
+  {
+    gpointer initfunc;
 
-        return info;
-      }
-      else
+    if (gnc_module_get_symbol(gmodule, "gnc_module_init", &initfunc))
+    {
+      /* stick it in the hash table */
+      info = g_new0(GNCLoadedModule, 1);
+      info->gmodule    = gmodule;
+      info->filename   = g_strdup(modinfo->module_filepath);
+      info->load_count = 1;
+      info->init_func  = initfunc;
+      g_hash_table_insert(loaded_modules, info, info);
+
+      /* now call its init function.  this should load any dependent
+       * modules, too.  If it doesn't return TRUE unload the module. */
+      if (!info->init_func(0))
       {
-        g_warning ("Module %s (%s) is not a gnc-module.\n", module_name,
-                   modinfo->module_filepath);
-        //lt_dlclose(handle);
+	/* init failed. unload the module. */
+	g_warning ("Initialization failed for module %s\n", module_name);
+	g_hash_table_remove(loaded_modules, info);
+	g_free(info->filename);
+	g_free(info);
+	/* g_module_close(module); */
+	return NULL;
       }
+
       return info;
     }
-    else if (!optional)
+    else
     {
-      g_warning ("Failed to open module %s", module_name);
-      if(modinfo) printf(": %s\n", g_module_error());
-      else g_warning (": could not locate %s interface v.%d\n",
-                      module_name, iface);
-      return NULL;
+      g_warning ("Module %s (%s) is not a gnc-module.\n", module_name,
+		 modinfo->module_filepath);
+      //lt_dlclose(handle);
     }
-    return NULL;
+    return info;
   }
+
+  g_warning ("Failed to open module %s: %s\n", module_name, g_module_error());
+
+  return NULL;
 }
 
 
