Christophe Weblog Wiki Code Publications Music
ensure that the fifo is closed in printToString()
authorChristophe Rhodes <csr21@cantab.net>
Wed, 25 Aug 2010 14:55:41 +0000 (15:55 +0100)
committerChristophe Rhodes <csr21@cantab.net>
Wed, 25 Aug 2010 14:55:41 +0000 (15:55 +0100)
Whoops.  Good to know that I can make the same basic stream mistakes
in any language.

swank.R

diff --git a/swank.R b/swank.R
index 1c1633d..05b1c78 100644 (file)
--- a/swank.R
+++ b/swank.R
@@ -230,10 +230,8 @@ writeSexpToString <- function(obj) {
 
 printToString <- function(val) {
   f <- fifo("")
-  sink(f)
-  print(val)
-  sink()
-  readLines(f)
+  tryCatch({ sink(f); print(val); sink(); readLines(f) },
+           finally=close(f))
 }
 
 `swank:connection-info` <- function (io, sldbState) {