*** empty log message ***
[m17n/m17n-lib.git] / src / m17n.c
index 0b658d0..90bdd20 100644 (file)
@@ -42,10 +42,10 @@ m17n_init (void)
 {
   int mdebug_mask = MDEBUG_INIT;
 
-  if (shell_initialized)
+  if (shell_initialized++)
     return;
   m17n_init_core ();
-  if (merror_code < 0)
+  if (merror_code != MERROR_NONE)
     return;
   MDEBUG_PUSH_TIME ();
   MDEBUG_PUSH_TIME ();
@@ -76,7 +76,6 @@ m17n_init (void)
   if (minput__init () < 0)
     goto err;
   MDEBUG_PRINT_TIME ("INIT", (stderr, " to initialize input module."));
-  shell_initialized = 1;
 
  err:
   MDEBUG_POP_TIME ();
@@ -89,28 +88,30 @@ m17n_fini (void)
 {
   int mdebug_mask = MDEBUG_FINI;
 
-  if (shell_initialized)
+  if (shell_initialized > 1)
+    shell_initialized--;
+  else
     {
+      shell_initialized = 0;
       MDEBUG_PUSH_TIME ();
       MDEBUG_PUSH_TIME ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize input module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize input module."));
       minput__fini ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize locale module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize locale module."));
       mlocale__fini ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize language module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize language module."));
       mlang__fini ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize character module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize character module."));
       mchar__fini ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize database module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize database module."));
       mdatabase__fini ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize coding module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize coding module."));
       mcoding__fini ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize charset module."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize charset module."));
       mcharset__fini ();
       MDEBUG_POP_TIME ();
-      MDEBUG_PRINT_TIME ("INIT", (stderr, " to finalize the shell modules."));
+      MDEBUG_PRINT_TIME ("FINI", (stderr, " to finalize the shell modules."));
       MDEBUG_POP_TIME ();
-      shell_initialized = 0;
     }
   m17n_fini_core ();
 }