[uim-commit] r2925 - branches/r5rs/sigscheme/src

yamaken at freedesktop.org yamaken at freedesktop.org
Sat Jan 14 18:03:22 PST 2006


Author: yamaken
Date: 2006-01-14 18:02:44 -0800 (Sat, 14 Jan 2006)
New Revision: 2925

Modified:
   branches/r5rs/sigscheme/src/syntax.c
Log:
* sigscheme/src/syntax.c
  - (filter_definitions): Enclose prototype decl into
    SCM_STRICT_DEFINE_PLACEMENT
  - (scm_s_do): Fix assertion failure caused by mismatched actuals
    number from invalid internal definitions when
    !SCM_STRICT_DEFINE_PLACEMENT


Modified: branches/r5rs/sigscheme/src/syntax.c
===================================================================
--- branches/r5rs/sigscheme/src/syntax.c	2006-01-15 01:37:11 UTC (rev 2924)
+++ branches/r5rs/sigscheme/src/syntax.c	2006-01-15 02:02:44 UTC (rev 2925)
@@ -62,8 +62,10 @@
 /*=======================================
   File Local Function Declarations
 =======================================*/
+#if SCM_STRICT_DEFINE_PLACEMENT
 static ScmObj filter_definitions(ScmObj body, ScmObj *formals, ScmObj *actuals,
                                  ScmQueue *def_expq);
+#endif
 static void define_internal(ScmObj var, ScmObj exp, ScmObj env);
 
 /* Quasiquotation. */
@@ -1021,7 +1023,12 @@
             val = EVAL(step, env);
             actuals = CONS(val, actuals);
         }
+#if SCM_STRICT_DEFINE_PLACEMENT
         env = scm_update_environment(actuals, env);
+#else
+        /* silently discards new bindings from invalid internal definitions */
+        env = scm_replace_environment(formals, actuals, env);
+#endif
     }
 #if SCM_STRICT_ARGCHECK
     /* no iteration occurred */



More information about the uim-commit mailing list