[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