--- numbers.c.~1.206.~ 1970-01-01 10:00:01.000000000 +1000 +++ numbers.c 2003-11-13 11:47:30.000000000 +1000 @@ -1355,7 +1355,6 @@ else if (SCM_BIGP (k)) { z_i2 = scm_i_clonebig (k, 1); - mpz_init_set (SCM_I_BIG_MPZ (z_i2), SCM_I_BIG_MPZ (k)); scm_remember_upto_here_1 (k); i2_is_big = 1; } @@ -1367,7 +1366,7 @@ if ((r > SCM_MOST_POSITIVE_FIXNUM) || (r < SCM_MOST_NEGATIVE_FIXNUM)) { z_i2 = scm_i_mkbig (); - mpz_init_set_d (SCM_I_BIG_MPZ (z_i2), r); + mpz_set_d (SCM_I_BIG_MPZ (z_i2), r); i2_is_big = 1; } else @@ -1389,12 +1388,10 @@ { if (mpz_sgn(SCM_I_BIG_MPZ (z_i2)) == 0) { - mpz_clear (SCM_I_BIG_MPZ (z_i2)); return acc; } if (mpz_cmp_ui(SCM_I_BIG_MPZ (z_i2), 1) == 0) { - mpz_clear (SCM_I_BIG_MPZ (z_i2)); return scm_product (acc, n); } if (mpz_tstbit(SCM_I_BIG_MPZ (z_i2), 0))