mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-07-09 22:17:34 +02:00
Fixing careless returns without GC release in sexp_ratio_normalize.
This commit is contained in:
parent
bb50ac05e4
commit
057198c4d8
1 changed files with 1 additions and 1 deletions
2
sexp.c
2
sexp.c
|
@ -1801,12 +1801,12 @@ sexp sexp_make_ratio (sexp ctx, sexp num, sexp den) {
|
||||||
sexp sexp_ratio_normalize (sexp ctx, sexp rat, sexp in) {
|
sexp sexp_ratio_normalize (sexp ctx, sexp rat, sexp in) {
|
||||||
sexp tmp;
|
sexp tmp;
|
||||||
sexp_gc_var2(num, den);
|
sexp_gc_var2(num, den);
|
||||||
sexp_gc_preserve2(ctx, num, den);
|
|
||||||
num = sexp_ratio_numerator(rat), den = sexp_ratio_denominator(rat);
|
num = sexp_ratio_numerator(rat), den = sexp_ratio_denominator(rat);
|
||||||
if (den == SEXP_ZERO)
|
if (den == SEXP_ZERO)
|
||||||
return sexp_read_error(ctx, "zero denominator in ratio", rat, in);
|
return sexp_read_error(ctx, "zero denominator in ratio", rat, in);
|
||||||
else if (num == SEXP_ZERO)
|
else if (num == SEXP_ZERO)
|
||||||
return SEXP_ZERO;
|
return SEXP_ZERO;
|
||||||
|
sexp_gc_preserve2(ctx, num, den);
|
||||||
while (den != SEXP_ZERO) {
|
while (den != SEXP_ZERO) {
|
||||||
tmp = sexp_remainder(ctx, num, den);
|
tmp = sexp_remainder(ctx, num, den);
|
||||||
if (sexp_exceptionp(tmp)) {
|
if (sexp_exceptionp(tmp)) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue