From 406378b6bb4a60f379cc713205fec5a8c4360c63 Mon Sep 17 00:00:00 2001 From: Sebastian Thiel Date: Sat, 28 May 2016 17:29:59 +0200 Subject: [PATCH] Prevent overflows by increasing ring buffer size Please note that this change is just done to prevent issues as currently seen by syntex_syntax in future. See https://github.com/serde-rs/syntex/pull/47 for details. As shown in https://github.com/serde-rs/syntex/issues/33, complex code can easily overflow the ring-buffer and cause an assertion error. --- src/libsyntax/print/pp.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libsyntax/print/pp.rs b/src/libsyntax/print/pp.rs index 4a92ad8ddb26d..32b66da4d96ce 100644 --- a/src/libsyntax/print/pp.rs +++ b/src/libsyntax/print/pp.rs @@ -159,9 +159,9 @@ pub struct PrintStackElem { const SIZE_INFINITY: isize = 0xffff; pub fn mk_printer<'a>(out: Box, linewidth: usize) -> Printer<'a> { - // Yes 3, it makes the ring buffers big enough to never + // Yes 55, it makes the ring buffers big enough to never // fall behind. - let n: usize = 3 * linewidth; + let n: usize = 55 * linewidth; debug!("mk_printer {}", linewidth); let token = vec![Token::Eof; n]; let size = vec![0; n];