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)

Reply via email to