Author: yamakenz
Date: Fri Aug 10 16:13:19 2007
New Revision: 4815
Modified:
trunk/doc/COMPATIBILITY
trunk/uim/uim-error.c
trunk/uim/uim-scm.c
trunk/uim/uim-scm.h
trunk/uim/uim.c
Log:
* uim/uim-scm.h
- (uim_scm_is_alive): Removed
* uim/uim-scm.c
- (sscm_is_exit_with_fatal_error, uim_scm_is_alive, exit_hook): Removed
- (uim_scm_init): Remove obsolete fatal error handling
* uim/uim-error.c
- (uim_throw_error, uim_fatal_error, uim_catch_error_begin): Allow NULL msg
* uim/uim.c
- (fatal_error_hook): Replace error message with NULL
- (uim_create_context): Remove uim_scm_is_alive()
* doc/COMPATIBILITY
- Update
Modified: trunk/doc/COMPATIBILITY
==============================================================================
--- trunk/doc/COMPATIBILITY (original)
+++ trunk/doc/COMPATIBILITY Fri Aug 10 16:13:19 2007
@@ -61,7 +61,7 @@
Affects: uim developers
Updates: internal C API
Version: 1.5.0
-Revision: ac4814
+Revision: ac4814, ac4815
Date: 2007-08-11
Modifier: YamaKen
Related: Fatal error handling helpers for plugin developers
@@ -363,7 +363,7 @@
Affects: uim developers, IM developers
Updates: C API, libuim ABI
Version: 1.5.0
-Revision: ac4333, ac4334, ac4339, ac4347, ac4351-ac4353, ac4355, ac4444,
ac4446, ac4751, ac4761, ac4764, ac4788, ac4808, ac4812, ac4813
+Revision: ac4333, ac4334, ac4339, ac4347, ac4351-ac4353, ac4355, ac4444,
ac4446, ac4751, ac4761, ac4764, ac4788, ac4808, ac4812, ac4813, ac4815
Date: 2007-01-09 -
Modifier: YamaKen
Related: SigScheme introduction to uim
@@ -436,6 +436,7 @@
(removed) uim_scm_set_verbose_level()
(removed) uim_scm_get_output()
(removed) uim_scm_set_output()
+ (removed) uim_scm_is_alive()
(removed) struct uim_api_tbl
(removed) im-return-str
(removed) im-return-str-list
Modified: trunk/uim/uim-error.c
==============================================================================
--- trunk/uim/uim-error.c (original)
+++ trunk/uim/uim-error.c Fri Aug 10 16:13:19 2007
@@ -81,11 +81,13 @@
if (SETJMP(env)) {
guarded = 0;
- fputs("ERROR: ", stderr);
- if (fatal_errored)
- fputs("fatal: ", stderr);
- fputs(err_msg, stderr);
- fputs("\n", stderr);
+ if (err_msg) {
+ fputs("ERROR: ", stderr);
+ if (fatal_errored)
+ fputs("fatal: ", stderr);
+ fputs(err_msg, stderr);
+ fputs("\n", stderr);
+ }
return UIM_TRUE;
}
@@ -105,6 +107,8 @@
void
uim_throw_error(const char *msg)
{
+ assert(msg || !msg);
+
if (!guarded)
exit(EXIT_FAILURE);
@@ -115,6 +119,8 @@
void
uim_fatal_error(const char *msg)
{
+ assert(msg || !msg);
+
fatal_errored = UIM_TRUE;
uim_throw_error(msg);
}
Modified: trunk/uim/uim-scm.c
==============================================================================
--- trunk/uim/uim-scm.c (original)
+++ trunk/uim/uim-scm.c Fri Aug 10 16:13:19 2007
@@ -63,7 +63,7 @@
static uim_lisp protected;
-static uim_bool initialized, sscm_is_exit_with_fatal_error;
+static uim_bool initialized;
static void *uim_scm_error_internal(const char *msg);
struct uim_scm_error_obj_args {
@@ -148,7 +148,6 @@
static void *
uim_scm_error_obj_internal(struct uim_scm_error_obj_args *args)
{
- /* FIXME: don't terminate the process */
scm_error_obj(NULL, args->msg, (ScmObj)args->errobj);
SCM_NOTREACHED;
}
@@ -413,12 +412,6 @@
return initialized;
}
-uim_bool
-uim_scm_is_alive(void)
-{
- return (initialized && !sscm_is_exit_with_fatal_error);
-}
-
void
uim_scm_set_lib_path(const char *path)
{
@@ -1011,15 +1004,6 @@
scm_register_func(name, (scm_syntax_variadic_0)func, SCM_SYNTAX_VARIADIC_0);
}
-static void
-exit_hook(void)
-{
- sscm_is_exit_with_fatal_error = UIM_TRUE;
- /* FIXME: Add longjmp() to outermost uim API call, and make all API
- * calls uim_scm_is_alive()-sensitive. It should be fixed on uim
- * 1.5. -- YamaKen 2006-06-06, 2006-12-27 */
-}
-
void
uim_scm_init(const char *system_load_path)
{
@@ -1057,7 +1041,6 @@
storage_conf.n_heaps_init = 1;
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() */
protected = (uim_lisp)SCM_FALSE;
@@ -1078,6 +1061,5 @@
return;
scm_finalize();
- sscm_is_exit_with_fatal_error = UIM_FALSE;
initialized = UIM_FALSE;
}
Modified: trunk/uim/uim-scm.h
==============================================================================
--- trunk/uim/uim-scm.h (original)
+++ trunk/uim/uim-scm.h Fri Aug 10 16:13:19 2007
@@ -81,8 +81,6 @@
/* subsystem interfaces */
uim_bool uim_scm_is_initialized(void);
-uim_bool
-uim_scm_is_alive(void);
void
uim_scm_set_lib_path(const char *path);
Modified: trunk/uim/uim.c
==============================================================================
--- trunk/uim/uim.c (original)
+++ trunk/uim/uim.c Fri Aug 10 16:13:19 2007
@@ -76,7 +76,8 @@
static void
fatal_error_hook(void)
{
- uim_fatal_error("fatal error in Scheme interpreter");
+ /* error message is already printed by the Scheme interpreter */
+ uim_fatal_error(NULL);
}
int
@@ -163,9 +164,6 @@
uim_lisp lang_, engine_;
assert(uim_scm_gc_any_contextp());
-
- if (!uim_scm_is_alive())
- return NULL;
uc = malloc(sizeof(*uc));
if (!uc)