diff --git a/json.rs b/json.rs index 68ff1908..d762ebf0 100644 --- a/json.rs +++ b/json.rs @@ -792,11 +792,20 @@ fn fmt_f64_or_null(wr: &mut W, v: f64) -> IoResult<()> { } } -fn spaces(wr: &mut W, n: uint) -> IoResult<()> { - for _ in range(0, n) { - try!(wr.write_str(" ")); +fn spaces(wr: &mut W, mut n: uint) -> IoResult<()> { + static len: uint = 16; + static buf: [u8, ..len] = [b' ', ..len]; + + while n >= buf.len() { + try!(wr.write(buf)); + n -= buf.len(); + } + + if n > 0 { + wr.write(buf.slice_to(n)) + } else { + Ok(()) } - Ok(()) } #[deriving(Show)]