Author: yamakenz
Date: Mon Jul 16 22:12:17 2007
New Revision: 4731

Modified:
   trunk/uim/uim-scm.c
   trunk/uim/uim-scm.h
   trunk/uim/uim.c

Log:
* uim/uim-scm.h
  - (uim_scm_gc_any_contextp): Add check for uim_scm_is_alive()
* uim/uim-scm.c
  - (uim_scm_is_alive): Follow the change of uim_scm_gc_any_contextp()
  - (uim_scm_init): Ditto

* uim/uim.c
  - (uim_get_im_name): Fix a comment


Modified: trunk/uim/uim-scm.c
==============================================================================
--- trunk/uim/uim-scm.c (original)
+++ trunk/uim/uim-scm.c Mon Jul 16 22:12:17 2007
@@ -392,9 +392,7 @@
 uim_bool
 uim_scm_is_alive(void)
 {
-  assert(uim_scm_gc_any_contextp());
-
-  return (!sscm_is_exit_with_fatal_error);
+  return (initialized && !sscm_is_exit_with_fatal_error);
 }
 
 long
@@ -1061,6 +1059,7 @@
   storage_conf.symbol_hash_size     = 1024;
   scm_initialize(&storage_conf, (const char *const *)&argv);
   scm_set_fatal_error_callback(exit_hook);
+  initialized = UIM_TRUE;  /* init here for uim_scm_gc_protect() */
 
   /* GC safe */
   output_port = scm_make_shared_file_port(uim_output, "uim", 
SCM_PORTFLAG_OUTPUT);
@@ -1079,7 +1078,6 @@
   scm_require_module("siod");
 
   uim_scm_set_verbose_level(vlevel);
-  initialized = UIM_TRUE;
 }
 
 void

Modified: trunk/uim/uim-scm.h
==============================================================================
--- trunk/uim/uim-scm.h (original)
+++ trunk/uim/uim-scm.h Mon Jul 16 22:12:17 2007
@@ -102,8 +102,9 @@
 uim_bool uim_scm_gc_protectedp(uim_lisp obj);
 uim_bool uim_scm_gc_protected_contextp(void);
 /* for semantic assertions */
-#define uim_scm_gc_any_contextp()                                            \
-  (!uim_scm_gc_protected_contextp() || uim_scm_gc_protected_contextp())
+#define uim_scm_gc_any_contextp()                                      \
+  (uim_scm_is_alive()                                                  \
+   && (!uim_scm_gc_protected_contextp() || uim_scm_gc_protected_contextp()))
 
 /* evaluations */
 uim_lisp uim_scm_symbol_value(const char *symbol_str);

Modified: trunk/uim/uim.c
==============================================================================
--- trunk/uim/uim.c     (original)
+++ trunk/uim/uim.c     Mon Jul 16 22:12:17 2007
@@ -723,7 +723,7 @@
    * unprotected variable causes unexpected sweep, l_freelist is not
    * supposed to be broken.  -- 2007-04-05 YamaKen
    *
-   * $ uim/uim-fep
+   * $ fep/uim-fep
    * lt-uim-fep: ../sigscheme/src/storage-gc.c:178: scm_alloc_cell: Assertion 
`!((scm_uintobj_t)(((scm_g_instance_static_gc).l_freelist)) % sizeof(ScmCell))' 
failed.
    */
   return uim_scm_refer_c_str(uim_scm_callf("im-name", "o", im));

Reply via email to