Rollup merge of #48167 - Mark-Simulacrum:remove-allocation-codemap, r=estebank

Remove allocation from width of character function.

Locally this seems to eliminate the problem or at least resolve most of the
issue.

Fixes #48153.

r? @estebank
This commit is contained in:
kennytm 2018-02-14 16:14:47 +08:00
commit dc9d93f220
No known key found for this signature in database
GPG Key ID: FEF6C8051D0E013C
1 changed files with 5 additions and 3 deletions

View File

@ -690,14 +690,16 @@ impl CodeMap {
return 1;
}
let src = local_begin.fm.external_src.borrow();
// We need to extend the snippet to the end of the src rather than to end_index so when
// searching forwards for boundaries we've got somewhere to search.
let snippet = if let Some(ref src) = local_begin.fm.src {
let len = src.len();
(&src[start_index..len]).to_string()
} else if let Some(src) = local_begin.fm.external_src.borrow().get_source() {
(&src[start_index..len])
} else if let Some(src) = src.get_source() {
let len = src.len();
(&src[start_index..len]).to_string()
(&src[start_index..len])
} else {
return 1;
};