From: Ian Jackson Date: Wed, 4 May 2022 18:25:53 +0000 (+0100) Subject: utils: svg_parse_size: Take &HtmlStr, not &str X-Git-Tag: otter-1.1.0~303 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ac6b7c4f858eb04944f65be438094e9c1ac98fbe;p=otter.git utils: svg_parse_size: Take &HtmlStr, not &str This is more correct. And it will be more convenient shortly. Signed-off-by: Ian Jackson --- diff --git a/src/bundles.rs b/src/bundles.rs index 5022175f..f728adb8 100644 --- a/src/bundles.rs +++ b/src/bundles.rs @@ -784,7 +784,7 @@ fn usvg_size(f: &mut BufReader) -> PosC { 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")? diff --git a/src/shapelib.rs b/src/shapelib.rs index 86c9a60d..63ea0410 100644 --- a/src/shapelib.rs +++ b/src/shapelib.rs @@ -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)] diff --git a/src/utils.rs b/src/utils.rs index 093c0d28..bb0953f9 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -232,8 +232,8 @@ pub enum SVGWidthOrHeight { } #[throws(SVGSizeError)] -pub fn svg_parse_size(xml: &str) -> PosC { - let mut tokens = xmlparser::Tokenizer::from(xml) +pub fn svg_parse_size(xml: &HtmlStr) -> PosC { + 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)));