(config_command): Fix previous change again.
[m17n/m17n-lib.git] / src / m17n-gui.c
index d13d248..c0bd14a 100644 (file)
@@ -17,7 +17,7 @@
 
    You should have received a copy of the GNU Lesser General Public
    License along with the m17n library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    02111-1307, USA.  */
 
 /***en
@@ -88,7 +88,7 @@ typedef struct
 {
   /** Name of the dynamic library (e.g. "libm17n-X.so").  */
   char *library;
-  /** Handle fo the dynamic library.  */
+  /** Handle of the dynamic library.  */
   void *handle;
   /** Function to call just after loading the library.  */
   int (*init) ();
@@ -321,7 +321,10 @@ m17n_fini_win (void)
     }
 #ifdef HAVE_FREETYPE
   if (null_interface.handle)
-    (*null_interface.fini) ();
+    {
+      (*null_interface.fini) ();
+      null_interface.handle = NULL;
+    }
 #endif /* not HAVE_FREETYPE */
   M17N_OBJECT_UNREF (device_library_list);
   minput__win_fini ();
@@ -652,13 +655,12 @@ mframe (MPlist *plist)
       if (! interface->handle)
        {
          if (! (interface->handle = dlopen (interface->library, RTLD_NOW))
-             || ! (interface->init
-                   = (int (*) ()) dlsym (interface->handle, "device_init"))
-             || ! (interface->open
-                   = (int (*) (MFrame *, MPlist *)) dlsym (interface->handle,
-                                                           "device_open"))
-             || ! (interface->fini
-                   = (int (*) ()) dlsym (interface->handle, "device_fini"))
+             || ! (*(void **) (&interface->init)
+                   = dlsym (interface->handle, "device_init"))
+             || ! (*(void **) (&interface->open)
+                   = dlsym (interface->handle, "device_open"))
+             || ! (*(void **) (&interface->fini)
+                   = dlsym (interface->handle, "device_fini"))
              || (*interface->init) () < 0)
            {
              fprintf (stderr, "%s\n", (char *) dlerror ());