diff options
author | Dan Davison <dandavison7@gmail.com> | 2011-05-20 13:30:45 -0700 |
---|---|---|
committer | Dan Davison <dandavison7@gmail.com> | 2011-05-20 13:30:45 -0700 |
commit | cec8711a44a9a1ac6552546c05ec0623a2bf9e45 (patch) | |
tree | 3b96759f508458810b96178e71848ca7bdf2d425 | |
parent | 7af369da697930ab89b0c26d52b13b3ebf3ec8c1 (diff) | |
download | org-mode-cec8711a44a9a1ac6552546c05ec0623a2bf9e45.tar.gz |
Avoid race condition in ob-R code responsible for writing result to disk
Slight modification of patch by Christophe Rhodes
* lisp/ob-R.el (org-babel-R-write-object-command): Ensure that all
data is written to the results file before Emacs notices that the file
exists.
-rw-r--r-- | lisp/ob-R.el | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lisp/ob-R.el b/lisp/ob-R.el index 713d59f..d0efcbb 100644 --- a/lisp/ob-R.el +++ b/lisp/ob-R.el @@ -227,7 +227,7 @@ current code buffer." (defvar org-babel-R-eoe-indicator "'org_babel_R_eoe'") (defvar org-babel-R-eoe-output "[1] \"org_babel_R_eoe\"") -(defvar org-babel-R-write-object-command "{function(object, transfer.file) {object;invisible(if(inherits(try(write.table(object, file=transfer.file, sep=\"\\t\", na=\"nil\",row.names=%s, col.names=%s, quote=FALSE), silent=TRUE),\"try-error\")) {if(!file.exists(transfer.file)) file.create(transfer.file)})}}(object=%s, transfer.file=\"%s\")") +(defvar org-babel-R-write-object-command "{function(object,transfer.file){object;invisible(if(inherits(try({tfile<-tempfile();write.table(object,file=tfile,sep=\"\\t\",na=\"nil\",row.names=%s,col.names=%s,quote=FALSE);file.rename(tfile,transfer.file)},silent=TRUE),\"try-error\")){if(!file.exists(transfer.file))file.create(transfer.file)})}}(object=%s,transfer.file=\"%s\")") (defun org-babel-R-evaluate (session body result-type column-names-p row-names-p) |