chiark / gitweb /
utils: svg_parse_size: Take &HtmlStr, not &str
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 May 2022 18:25:53 +0000 (19:25 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 4 May 2022 18:25:53 +0000 (19:25 +0100)
This is more correct.  And it will be more convenient shortly.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bundles.rs
src/shapelib.rs
src/utils.rs

index 5022175f160005a6f53512c989341b91519d1491..f728adb858d928fca8f41ec94b56225d06a52fc9 100644 (file)
@@ -784,7 +784,7 @@ fn usvg_size(f: &mut BufReader<File>) -> PosC<f64> {
     let s = str::from_utf8(&buf).unwrap_or_else(
       |e| str::from_utf8(&buf[0.. e.valid_up_to()]).unwrap());
 
-    let size = svg_parse_size(s)?;
+    let size = svg_parse_size(HtmlStr::from_html_str(s))?;
 
     Ok::<_,AE>(size)
   })().context("looking for width/height attributes")?
index 86c9a60d772e82fbe51edde33d7074f8511ba2a9..63ea0410624518f904039b666887c9dd1a3a0f3a 100644 (file)
@@ -538,6 +538,8 @@ impl Contents {
         SpE::InternalError(m.to_string())
       })?;
 
+    let svg_data = Html::from_html_string(svg_data);
+
     let _ = svg_parse_size(&svg_data).map_err(|error| SpE::SVGError {
       error,
       item_name: item_name.as_str().into(),
@@ -545,7 +547,7 @@ impl Contents {
       item_for_item: item_for.into(),
     })?;
 
-    Html::from_html_string(svg_data)
+    svg_data
   }
 
   #[throws(SpecError)]
index 093c0d2879a3d30866e09af06b10c90e438cf608..bb0953f9e0058e62a0a3d64fc04a7ef0b26f4bf2 100644 (file)
@@ -232,8 +232,8 @@ pub enum SVGWidthOrHeight {
 }
 
 #[throws(SVGSizeError)]
-pub fn svg_parse_size(xml: &str) -> PosC<f64> {
-  let mut tokens = xmlparser::Tokenizer::from(xml)
+pub fn svg_parse_size(xml: &HtmlStr) -> PosC<f64> {
+  let mut tokens = xmlparser::Tokenizer::from(xml.as_html_str())
     .map(|t| t.map_err(|e| SvSE::ParseError(e.to_string())))
     .chain(iter::repeat_with(|| Err(SvSE::UnexpectedEOF)));