diff --git a/src/mzscheme/src/bool.c b/src/mzscheme/src/bool.c index 8cc3eb4b79..1849f20b3b 100644 --- a/src/mzscheme/src/bool.c +++ b/src/mzscheme/src/bool.c @@ -156,11 +156,22 @@ int scheme_eqv (Scheme_Object *obj1, Scheme_Object *obj2) # ifdef NAN_EQUALS_ANYTHING if (MZ_IS_NAN(b)) return 0; - else + else { + if (a == 0.0) { + if (b == 0.0) { + return scheme_minus_zero_p(a) == scheme_minus_zero_p(b); + } + } return (a == b); + } # else return 0; } + if (a == 0.0) { + if (b == 0.0) { + return scheme_minus_zero_p(a) == scheme_minus_zero_p(b); + } + } return 1; # endif #endif @@ -182,13 +193,24 @@ int scheme_eqv (Scheme_Object *obj1, Scheme_Object *obj2) # ifdef NAN_EQUALS_ANYTHING if (MZ_IS_NAN(b)) return 0; - else + else { + if (a == 0.0) { + if (b == 0.0) { + return scheme_minus_zero_p(a) == scheme_minus_zero_p(b); + } + } return (a == b); + } # else return 0; } -# endif + if (a == 0.0) { + if (b == 0.0) { + return scheme_minus_zero_p(a) == scheme_minus_zero_p(b); + } + } return 1; +# endif } else if (t1 == scheme_bignum_type) return scheme_bignum_eq(obj1, obj2); else if (t1 == scheme_rational_type) diff --git a/src/mzscheme/src/syntax.c b/src/mzscheme/src/syntax.c index d80dc99c0a..0cc784e3e2 100644 --- a/src/mzscheme/src/syntax.c +++ b/src/mzscheme/src/syntax.c @@ -3986,14 +3986,13 @@ static Scheme_Object *write_case_lambda(Scheme_Object *obj) { Scheme_Case_Lambda *cl = (Scheme_Case_Lambda *)obj; int i; - Scheme_Object **a, *l; + Scheme_Object *l; i = cl->count; - a = cl->array; l = scheme_null; for (; i--; ) { - l = cons(a[i], l); + l = cons(cl->array[i], l); } return cons((cl->name ? cl->name : scheme_null),