From 97ccd6d71200288a8ebb54d2acf596465a8aba3c Mon Sep 17 00:00:00 2001 From: Bruce Mitchener Date: Mon, 26 Sep 2022 18:27:15 +0700 Subject: [PATCH] Avoid slicing a string in DocParsingError. (#1559) Fixes #1339. --- src/schema/schema.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/schema/schema.rs b/src/schema/schema.rs index c4db97a89..783ce11fe 100644 --- a/src/schema/schema.rs +++ b/src/schema/schema.rs @@ -422,12 +422,8 @@ pub enum DocParsingError { impl DocParsingError { /// Builds a NotJson DocParsingError fn invalid_json(invalid_json: &str) -> Self { - let sample_json: String = if invalid_json.len() < 20 { - invalid_json.to_string() - } else { - format!("{:?}...", &invalid_json[0..20]) - }; - DocParsingError::InvalidJson(sample_json) + let sample = invalid_json.chars().take(20).collect(); + DocParsingError::InvalidJson(sample) } } @@ -793,6 +789,11 @@ mod tests { )) ); } + { + // Short JSON, under the 20 char take. + let json_err = schema.parse_document(r#"{"count": 50,}"#); + assert_matches!(json_err, Err(InvalidJson(_))); + } { let json_err = schema.parse_document( r#"{