fix bug that affects `free-identifier=?'

This bug is in the "amazing that it lurked for years" category,
as well as the "stupid use of C preprocessor" category.
This commit is contained in:
Matthew Flatt 2011-08-16 10:27:37 -06:00
parent d05f138ed2
commit 311d55b5cf

View File

@ -365,7 +365,7 @@ XFORM_NONGCING static MZ_INLINE void DO_WRAP_POS_INC(Wrap_Pos *w)
#define WRAP_POS_INIT_END(w) (w.l = scheme_null, w.a = NULL, w.is_limb = 0, w.pos = 0) #define WRAP_POS_INIT_END(w) (w.l = scheme_null, w.a = NULL, w.is_limb = 0, w.pos = 0)
#define WRAP_POS_END_P(w) SCHEME_NULLP(w.l) #define WRAP_POS_END_P(w) SCHEME_NULLP(w.l)
#define WRAP_POS_FIRST(w) w.a #define WRAP_POS_FIRST(w) w.a
#define WRAP_POS_COPY(w, w2) w.l = (w2).l; w.a = (w2).a; w.is_limb= (w2).is_limb; w.pos = (w2).pos #define WRAP_POS_COPY(w, w2) w.l = (w2).l; w.a = (w2).a; w.is_limb = (w2).is_limb; w.pos = (w2).pos
/* Walking backwards through one chunk: */ /* Walking backwards through one chunk: */
@ -3618,8 +3618,9 @@ static Scheme_Object *resolve_env(WRAP_POS *_wraps,
if (_wraps) { if (_wraps) {
WRAP_POS_COPY(wraps, *_wraps); WRAP_POS_COPY(wraps, *_wraps);
WRAP_POS_INC(wraps); WRAP_POS_INC(wraps);
} else } else {
WRAP_POS_INIT(wraps, ((Scheme_Stx *)a)->wraps); WRAP_POS_INIT(wraps, ((Scheme_Stx *)a)->wraps);
}
while (1) { while (1) {
if (WRAP_POS_END_P(wraps)) { if (WRAP_POS_END_P(wraps)) {