mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 17:53:56 +00:00
rustdoc: make calls of markdown::render safer
Previously, external code might call `markdown::render()` without having called `markdown::reset_headers()`, meaning the TLS key `used_header_map` was unset. Now `markdown::render()` ensures that `used_header_map` is set by calling `reset_headers` if necessary. Fix #17736
This commit is contained in:
parent
dfbe9eb3b2
commit
942bed7aa6
@ -268,6 +268,10 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result {
|
||||
text.with_c_str(|p| unsafe { hoedown_buffer_puts(ob, p) });
|
||||
}
|
||||
|
||||
if used_header_map.get().is_none() {
|
||||
reset_headers();
|
||||
}
|
||||
|
||||
unsafe {
|
||||
let ob = hoedown_buffer_new(DEF_OUNIT);
|
||||
let renderer = hoedown_html_renderer_new(0, 0);
|
||||
@ -446,7 +450,7 @@ impl<'a> fmt::Show for MarkdownWithToc<'a> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::LangString;
|
||||
use super::{LangString, Markdown};
|
||||
|
||||
#[test]
|
||||
fn test_lang_string_parse() {
|
||||
@ -474,4 +478,10 @@ mod tests {
|
||||
t("{.example .rust}", false,false,false,false,false);
|
||||
t("{.test_harness .rust}", false,false,false,false,true);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn issue_17736() {
|
||||
let markdown = "# title";
|
||||
format!("{}", Markdown(markdown.as_slice()));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user