File tree Expand file tree Collapse file tree 3 files changed +25
-19
lines changed Expand file tree Collapse file tree 3 files changed +25
-19
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: 55f043d2560cb1d09d5b0a33f00c9ec10a86686f
2
+ refs/heads/master: 7dda88905630dff5d819ab5089ace9875df2217d
3
3
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4
4
refs/heads/snap-stage3: eb8fd119c65c67f3b1b8268cc7341c22d39b7b61
5
5
refs/heads/try: d324a424d8f84b1eb049b12cf34182bda91b0024
Original file line number Diff line number Diff line change @@ -248,12 +248,14 @@ pub fn start_program(prog: &str, args: &[~str]) -> Program {
248
248
}
249
249
250
250
fn read_all ( rd : io:: Reader ) -> ~str {
251
- let mut buf = ~"";
252
- while !rd. eof ( ) {
253
- let bytes = rd. read_bytes ( 4096 u) ;
254
- buf += str:: from_bytes ( bytes) ;
255
- }
256
- move buf
251
+ let buf = io:: with_bytes_writer ( |wr| {
252
+ let mut bytes = [ mut 0 , ..4096 ] ;
253
+ while !rd. eof ( ) {
254
+ let nread = rd. read ( bytes, bytes. len ( ) ) ;
255
+ wr. write ( bytes. view ( 0 , nread) ) ;
256
+ }
257
+ } ) ;
258
+ str:: from_bytes ( buf)
257
259
}
258
260
259
261
/**
@@ -341,13 +343,15 @@ fn writeclose(fd: c_int, s: ~str) {
341
343
fn readclose ( fd : c_int ) -> ~str {
342
344
let file = os:: fdopen ( fd) ;
343
345
let reader = io:: FILE_reader ( file, false ) ;
344
- let mut buf = ~"";
345
- while !reader. eof ( ) {
346
- let bytes = reader. read_bytes ( 4096 u) ;
347
- buf += str:: from_bytes ( bytes) ;
348
- }
346
+ let buf = io:: with_bytes_writer ( |writer| {
347
+ let mut bytes = [ mut 0 , ..4096 ] ;
348
+ while !reader. eof ( ) {
349
+ let nread = reader. read ( bytes, bytes. len ( ) ) ;
350
+ writer. write ( bytes. view ( 0 , nread) ) ;
351
+ }
352
+ } ) ;
349
353
os:: fclose ( file) ;
350
- move buf
354
+ str :: from_bytes ( buf)
351
355
}
352
356
353
357
/// Waits for a process to exit and returns the exit code
Original file line number Diff line number Diff line change @@ -136,13 +136,15 @@ fn readclose(fd: libc::c_int) -> ~str {
136
136
// Copied from run::program_output
137
137
let file = os::fdopen(fd);
138
138
let reader = io::FILE_reader(file, false);
139
- let mut buf = ~" ";
140
- while !reader.eof() {
141
- let bytes = reader.read_bytes(4096u);
142
- buf += str::from_bytes(bytes);
143
- }
139
+ let buf = io::with_bytes_writer(|writer| {
140
+ let mut bytes = [mut 0, ..4096];
141
+ while !reader.eof() {
142
+ let nread = reader.read(bytes, bytes.len());
143
+ writer.write(bytes.view(0, nread));
144
+ }
145
+ });
144
146
os::fclose(file);
145
- return buf;
147
+ str::from_bytes( buf)
146
148
}
147
149
148
150
fn generic_writer(+process: fn~(markdown: ~str)) -> Writer {
You can’t perform that action at this time.
0 commit comments