summaryrefslogtreecommitdiff
path: root/src/lib/render_text.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-11-30 22:08:00 +0100
committerCarl Hetherington <cth@carlh.net>2022-12-01 09:21:38 +0100
commit99cb0937e54340fa20c594aaa501276b8321cbf0 (patch)
tree2528f0ad27d870c33c76d0cb11892c81f1ab3a69 /src/lib/render_text.cc
parentefb1172f51bbe15cd1f90b25a032bbe858453f5f (diff)
Escape entities just before Pango rendering (#2382).v2.16.35
Previously, text coming out of the player would have things like & escaped to &amp;. This escaping is also done by libxml++ when writing XML, so doing it in the player would mean it was done twice. We do, however, need to escape things before passing them to Pango as otherwise it gives errors and renders nothing for the line. Here we move the escaping to just before the rendering, meaning that in the reset of DoM we should pass unescaped strings around.
Diffstat (limited to 'src/lib/render_text.cc')
-rw-r--r--src/lib/render_text.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lib/render_text.cc b/src/lib/render_text.cc
index d3db4ac19..2338bde97 100644
--- a/src/lib/render_text.cc
+++ b/src/lib/render_text.cc
@@ -103,6 +103,11 @@ marked_up (list<StringText> subtitles, int target_height, float fade_factor, str
span += " " + extra_attribute;
}
span += ">";
+
+ boost::algorithm::replace_all(text, "&", "&amp;");
+ boost::algorithm::replace_all(text, "<", "&lt;");
+ boost::algorithm::replace_all(text, ">", "&gt;");
+
span += text;
span += "</span>";
return span;