diff --git a/src/dehtml.rs b/src/dehtml.rs index 9f786a71a..dba2c14c0 100644 --- a/src/dehtml.rs +++ b/src/dehtml.rs @@ -165,9 +165,13 @@ fn dehtml_endtag_cb(event: &BytesEnd, dehtml: &mut Dehtml) { } "a" => { if let Some(ref last_href) = dehtml.last_href.take() { - dehtml.strbuilder += "]("; - dehtml.strbuilder += last_href; - dehtml.strbuilder += ")"; + if dehtml.strbuilder.ends_with('[') { + dehtml.strbuilder.truncate(dehtml.strbuilder.len() - 1); + } else { + dehtml.strbuilder += "]("; + dehtml.strbuilder += last_href; + dehtml.strbuilder += ")"; + } } } "b" | "strong" => { @@ -323,9 +327,10 @@ mod tests { ("& bar", "& bar"), // Despite missing ', this should be shown: ("", "No link: "), ( - "", - "[](https://get.delta.chat/)", + "No link: ", + "No link: ", ), ("\nfat text", "*fat text*"), // Invalid html (at least DC should show the text if the html is invalid):