chiark / gitweb /
svg size handling: Insist on having an SVG element
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 2 May 2022 10:39:44 +0000 (11:39 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 2 May 2022 10:39:44 +0000 (11:39 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/utils.rs

index c0968f588caf2e86985bf81a5bad48658c308252..a37839b9b2c24ffe24b00d6a5325daea35eb621f 100644 (file)
@@ -220,12 +220,14 @@ pub enum SVGSizeError {
   #[error("attribute {0} repeated")]     AttributeRepeated(String),
   #[error("attribute {0} unparseable")]  AttributeUnparseable(String),
   #[error("specifies only one of width and height")] OneOfWidthHeight,
+  #[error("encountered EOF before SVG element")] UnexpectedEOF,
 }
 
 #[throws(SVGSizeError)]
 pub fn svg_parse_size(xml: &str) -> Option<PosC<f64>> {
   let mut tokens = xmlparser::Tokenizer::from(xml)
-    .map(|t| t.map_err(|e| SvSE::ParseError(e.to_string())));
+    .map(|t| t.map_err(|e| SvSE::ParseError(e.to_string())))
+    .chain(iter::repeat_with(|| Err(SvSE::UnexpectedEOF)));
 
   use xmlparser::Token as Tk;
   let mut in_svg_element = false;