diff options
author | Andy Wingo <wingo@pobox.com> | 2011-11-08 19:17:23 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2011-11-08 19:18:20 +0100 |
commit | 215fe3a89119319fa0bb953ede574b38bea143ab (patch) | |
tree | dce86c079fd080effdde15138d7605f28118ac1b | |
parent | 14dcb5ccd282622abd71aed3e41235d90f89d39d (diff) | |
download | guile-215fe3a89119319fa0bb953ede574b38bea143ab.tar.gz |
lock ports in `write' and `display'
* libguile/print.c (scm_write, scm_display): Lock the port during
`display' and `write' calls. Fixes
https://savannah.gnu.org/bugs/?33996.
-rw-r--r-- | libguile/print.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libguile/print.c b/libguile/print.c index 62cf2a10f..6e1ff802f 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -1294,7 +1294,11 @@ scm_write (SCM obj, SCM port) SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_write); + scm_dynwind_begin (0); + scm_dynwind_lock_port (port); scm_prin1 (obj, port, 1); + scm_dynwind_end (); + return SCM_UNSPECIFIED; } @@ -1309,7 +1313,11 @@ scm_display (SCM obj, SCM port) SCM_ASSERT (scm_valid_oport_value_p (port), port, SCM_ARG2, s_display); + scm_dynwind_begin (0); + scm_dynwind_lock_port (port); scm_prin1 (obj, port, 0); + scm_dynwind_end (); + return SCM_UNSPECIFIED; } |