properly detect cancelling marks for context check on fully-expanded expressions

svn: r5645
This commit is contained in:
Matthew Flatt 2007-02-20 08:22:37 +00:00
parent 53987c5ee8
commit f8f8921a74

View File

@ -2499,7 +2499,22 @@ Scheme_Object *scheme_stx_activate_certs(Scheme_Object *o)
int scheme_stx_has_empty_wraps(Scheme_Object *o) int scheme_stx_has_empty_wraps(Scheme_Object *o)
{ {
return SCHEME_NULLP(((Scheme_Stx *)o)->wraps); WRAP_POS awl;
Scheme_Object *mark = NULL, *v;
WRAP_POS_INIT(awl, ((Scheme_Stx *)o)->wraps);
while (!WRAP_POS_END_P(awl)) {
v = WRAP_POS_FIRST(awl);
if (mark) {
if (!SAME_OBJ(mark, v))
return 0;
mark = NULL;
} else
mark = v;
WRAP_POS_INC(awl);
}
return !mark;
} }
/*========================================================================*/ /*========================================================================*/