about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTycho Sci <tychosci@gmail.com>2012-10-18 22:13:01 +0900
committerTycho Sci <tychosci@gmail.com>2012-10-18 23:27:55 +0900
commit6ce4cf769f671c53f05e97357110d4c0ba322eae (patch)
treeec90b59551584ead210c8bb9d1ca27e62055af77
parentc0cee3ebe47d4fca73cdab23889322c5e47f12e5 (diff)
downloadrust-6ce4cf769f671c53f05e97357110d4c0ba322eae.tar.gz
rust-6ce4cf769f671c53f05e97357110d4c0ba322eae.zip
rustdoc: Make markdown_writer::pandoc_writer UTF-8 safe
-rw-r--r--src/rustdoc/markdown_writer.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/rustdoc/markdown_writer.rs b/src/rustdoc/markdown_writer.rs
index ea559ae2ee6..1ed007def63 100644
--- a/src/rustdoc/markdown_writer.rs
+++ b/src/rustdoc/markdown_writer.rs
@@ -136,13 +136,15 @@ fn readclose(fd: libc::c_int) -> ~str {
     // Copied from run::program_output
     let file = os::fdopen(fd);
     let reader = io::FILE_reader(file, false);
-    let mut buf = ~"";
-    while !reader.eof() {
-        let bytes = reader.read_bytes(4096u);
-        buf += str::from_bytes(bytes);
-    }
+    let buf = io::with_bytes_writer(|writer| {
+        let mut bytes = [mut 0, ..4096];
+        while !reader.eof() {
+            let nread = reader.read(bytes, bytes.len());
+            writer.write(bytes.view(0, nread));
+        }
+    });
     os::fclose(file);
-    return buf;
+    str::from_bytes(buf)
 }
 
 fn generic_writer(+process: fn~(markdown: ~str)) -> Writer {