diff options
Diffstat (limited to 'libguile/goops.c')
-rw-r--r-- | libguile/goops.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/libguile/goops.c b/libguile/goops.c index 61f81e6c5..1c61d10ae 100644 --- a/libguile/goops.c +++ b/libguile/goops.c @@ -2741,9 +2741,10 @@ create_port_classes (void) { long i; - scm_port_class = (SCM *) scm_malloc (3 * 256 * sizeof (SCM)); - for (i = 0; i < 3 * 256; ++i) - scm_port_class[i] = 0; + /* Allocate 3 times the maximum number of port types so that input ports, + output ports, and in/out ports can be stored at different offsets. See + `SCM_IN_PCLASS_INDEX' et al. */ + scm_port_class = scm_calloc (3 * SCM_I_MAX_PORT_TYPE_COUNT * sizeof (SCM)); for (i = 0; i < scm_numptob; ++i) scm_make_port_classes (i, SCM_PTOBNAME (i)); |