[uim-commit] r1760 - branches/r5rs/sigscheme

yamaken at freedesktop.org yamaken at freedesktop.org
Mon Oct 3 02:32:31 PDT 2005


Author: yamaken
Date: 2005-10-03 02:32:28 -0700 (Mon, 03 Oct 2005)
New Revision: 1760

Modified:
   branches/r5rs/sigscheme/operations-srfi34.c
Log:
* sigscheme/operations-srfi34.c
  - (ScmOp_SRFI34_with_exception_handler): Fix function type for
    DECLARE_FUNCTION
  - (ScmExp_SRFI34_guard): Fix unsafe argument handling


Modified: branches/r5rs/sigscheme/operations-srfi34.c
===================================================================
--- branches/r5rs/sigscheme/operations-srfi34.c	2005-10-03 08:56:44 UTC (rev 1759)
+++ branches/r5rs/sigscheme/operations-srfi34.c	2005-10-03 09:32:28 UTC (rev 1760)
@@ -102,7 +102,7 @@
     jmp_buf jmpenv;
     ScmObj ret  = SCM_FALSE;
     ScmObj cont = Scm_NewContinuation();
-    DECLARE_FUNCTION("with-exception-handler", ProcedureFixed);
+    DECLARE_FUNCTION("with-exception-handler", ProcedureFixed2);
 
     ASSERT_PROCEDUREP(handler);
     ASSERT_PROCEDUREP(thunk);
@@ -125,21 +125,22 @@
     return ret;
 }
 
-/* FIXME:
- * - Simplify with POP_ARG macros
- */
 ScmObj ScmExp_SRFI34_guard(ScmObj var_and_clauses, ScmObj body, ScmObj env)
 {
     /* (guard (var clauses) body) */
     jmp_buf jmpenv;
-    ScmObj var     = CAR(var_and_clauses);
-    ScmObj clauses = CDR(var_and_clauses);
+    ScmObj var     = SCM_FALSE;
+    ScmObj clauses = SCM_FALSE;
     ScmObj expr    = SCM_FALSE;
     ScmObj cont    = Scm_NewContinuation();
     DECLARE_FUNCTION("guard", SyntaxVariadic1);
 
     ASSERT_SYMBOLP(var);
+    ASSERT_CONSP(var_and_clauses);
 
+    var     = CAR(var_and_clauses);
+    clauses = CDR(var_and_clauses);
+
     /* check if return from "raise" */
     CONTINUATION_SET_JMPENV(cont, &jmpenv);
     if (setjmp(CONTINUATION_JMPENV(cont))) {



More information about the uim-commit mailing list