summaryrefslogtreecommitdiff
path: root/libguile/vports.c
diff options
context:
space:
mode:
authorHan-Wen Nienhuys <hanwen@lilypond.org>2002-08-04 15:25:07 +0000
committerHan-Wen Nienhuys <hanwen@lilypond.org>2002-08-04 15:25:07 +0000
commit402788a93821879d278afd2f8309eed7e7e2e9c4 (patch)
tree14c2a8ac51c4e5af1cf92fe59473bd32ad7db057 /libguile/vports.c
parentc2cbcc57687ca716fb3e2166859b7be5880d80e2 (diff)
downloadguile-402788a93821879d278afd2f8309eed7e7e2e9c4.tar.gz
port GC fix
Diffstat (limited to 'libguile/vports.c')
-rw-r--r--libguile/vports.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/libguile/vports.c b/libguile/vports.c
index ce5ea7925..6addd2b0c 100644
--- a/libguile/vports.c
+++ b/libguile/vports.c
@@ -189,12 +189,14 @@ SCM_DEFINE (scm_make_soft_port, "make-soft-port", 2, 0, 0,
SCM z;
SCM_VALIDATE_VECTOR_LEN (1, pv,5);
SCM_VALIDATE_STRING (2, modes);
- z = scm_cell (scm_tc16_sfport, 0);
+
SCM_DEFER_INTS;
- pt = scm_add_to_port_table (z);
+ pt = scm_new_port_table_entry ();
scm_port_non_buffer (pt);
- SCM_SET_CELL_TYPE (z, scm_tc16_sfport | scm_mode_bits (SCM_STRING_CHARS (modes)));
+ z = scm_cell (scm_tc16_sfport | scm_mode_bits (SCM_STRING_CHARS (modes)), 0);
SCM_SETPTAB_ENTRY (z, pt);
+ pt->port = z;
+
SCM_SETSTREAM (z, SCM_UNPACK (pv));
SCM_ALLOW_INTS;
return z;