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));