summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/ChangeLog6
-rw-r--r--libguile/gc-card.c3
-rw-r--r--libguile/numbers.c2
3 files changed, 9 insertions, 2 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 3f9667804..2f6c4f82f 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,3 +1,9 @@
+2003-09-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_make_complex), gc-card.c (scm_i_sweep_card): Use
+ sizeof (scm_t_complex) to determine the memory size of the
+ malloc'd area for complex numbers.
+
2003-09-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
* numbers.c (scm_bigequal): Fixed.
diff --git a/libguile/gc-card.c b/libguile/gc-card.c
index 3939417d3..26fd425d5 100644
--- a/libguile/gc-card.c
+++ b/libguile/gc-card.c
@@ -21,6 +21,7 @@
#include "libguile/_scm.h"
#include "libguile/eval.h"
+#include "libguile/numbers.h"
#include "libguile/stime.h"
#include "libguile/stackchk.h"
#include "libguile/struct.h"
@@ -238,7 +239,7 @@ scm_i_sweep_card (scm_t_cell * p, SCM *free_list, scm_t_heap_segment*seg)
/* nothing else to do here since the mpz is in a double cell */
break;
case scm_tc16_complex:
- scm_gc_free (SCM_COMPLEX_MEM (scmptr), 2*sizeof (double),
+ scm_gc_free (SCM_COMPLEX_MEM (scmptr), sizeof (scm_t_complex),
"complex");
break;
default:
diff --git a/libguile/numbers.c b/libguile/numbers.c
index 661622205..472866bd7 100644
--- a/libguile/numbers.c
+++ b/libguile/numbers.c
@@ -2510,7 +2510,7 @@ scm_make_complex (double x, double y)
else
{
SCM z;
- SCM_NEWSMOB (z, scm_tc16_complex, scm_gc_malloc (2*sizeof (double),
+ SCM_NEWSMOB (z, scm_tc16_complex, scm_gc_malloc (sizeof (scm_t_complex),
"complex"));
SCM_COMPLEX_REAL (z) = x;
SCM_COMPLEX_IMAG (z) = y;