mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-21 06:39:17 +02:00
forgot to preserve a var on remainder
This commit is contained in:
parent
87fa6e3b7e
commit
4a5cae51ae
2 changed files with 8 additions and 6 deletions
12
opt/bignum.c
12
opt/bignum.c
|
@ -434,8 +434,10 @@ sexp sexp_bignum_quotient (sexp ctx, sexp a, sexp b) {
|
|||
}
|
||||
|
||||
sexp sexp_bignum_remainder (sexp ctx, sexp a, sexp b) {
|
||||
sexp rem;
|
||||
sexp_gc_var1(rem);
|
||||
sexp_gc_preserve1(ctx, rem);
|
||||
sexp_bignum_quot_rem(ctx, &rem, a, b); /* discard quotient */
|
||||
sexp_gc_release1(ctx);
|
||||
return rem;
|
||||
}
|
||||
|
||||
|
@ -605,9 +607,9 @@ sexp sexp_mul (sexp ctx, sexp a, sexp b) {
|
|||
sexp sexp_div (sexp ctx, sexp a, sexp b) {
|
||||
int at=sexp_number_type(a), bt=sexp_number_type(b);
|
||||
double f;
|
||||
sexp r=SEXP_VOID, rem;
|
||||
sexp_gc_var1(tmp);
|
||||
sexp_gc_preserve1(ctx, tmp);
|
||||
sexp r=SEXP_VOID;
|
||||
sexp_gc_var2(tmp, rem);
|
||||
sexp_gc_preserve2(ctx, tmp, rem);
|
||||
switch ((at << 2) + bt) {
|
||||
case SEXP_NUM_NOT_NOT: case SEXP_NUM_NOT_FIX:
|
||||
case SEXP_NUM_NOT_FLO: case SEXP_NUM_NOT_BIG:
|
||||
|
@ -651,7 +653,7 @@ sexp sexp_div (sexp ctx, sexp a, sexp b) {
|
|||
r = sexp_make_flonum(ctx, sexp_bignum_to_double(a) / sexp_flonum_value(b));
|
||||
break;
|
||||
}
|
||||
sexp_gc_release1(ctx);
|
||||
sexp_gc_release2(ctx);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
|
2
sexp.c
2
sexp.c
|
@ -79,7 +79,7 @@ static struct sexp_struct _sexp_type_specs[] = {
|
|||
_DEF_TYPE(SEXP_STRING, 0, 0, 0, 0, 0, sexp_sizeof(string)+1, sexp_offsetof(string, length), 1, "string", NULL),
|
||||
_DEF_TYPE(SEXP_VECTOR, sexp_offsetof(vector, data), 0, 0, sexp_offsetof(vector, length), 1, sexp_sizeof(vector), sexp_offsetof(vector, length), sizeof(sexp), "vector", NULL),
|
||||
_DEF_TYPE(SEXP_FLONUM, 0, 0, 0, 0, 0, sexp_sizeof(flonum), 0, 0, "flonum", NULL),
|
||||
_DEF_TYPE(SEXP_BIGNUM, 0, 0, 0, 0, 0, sexp_sizeof(bignum), sexp_offsetof(bignum, length), sizeof(sexp), "bignum", NULL),
|
||||
_DEF_TYPE(SEXP_BIGNUM, 0, 0, 0, 0, 0, sexp_sizeof(bignum), sexp_offsetof(bignum, length), sizeof(sexp_uint_t), "bignum", NULL),
|
||||
_DEF_TYPE(SEXP_CPOINTER, sexp_offsetof(cpointer, parent), 1, 0, 0, 0, sexp_sizeof(cpointer), sexp_offsetof(cpointer, length), 1, "cpointer", NULL),
|
||||
_DEF_TYPE(SEXP_IPORT, sexp_offsetof(port, name), 2, 2, 0, 0, sexp_sizeof(port), 0, 0, "input-port", SEXP_FINALIZE_PORT),
|
||||
_DEF_TYPE(SEXP_OPORT, sexp_offsetof(port, name), 2, 2, 0, 0, sexp_sizeof(port), 0, 0, "output-port", SEXP_FINALIZE_PORT),
|
||||
|
|
Loading…
Add table
Reference in a new issue