summaryrefslogtreecommitdiff
path: root/libguile/vports.c
diff options
context:
space:
mode:
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;