From c67eb60fd5b546cb2abb138d2416b70ce19ba636 Mon Sep 17 00:00:00 2001 From: Thomas Krijnen Date: Fri, 9 Jun 2023 11:34:50 +0200 Subject: [PATCH] #2942 Escape SVG text labels --- src/serializers/SvgSerializer.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/serializers/SvgSerializer.cpp b/src/serializers/SvgSerializer.cpp index cdeb383841..6fa3b807a4 100644 --- a/src/serializers/SvgSerializer.cpp +++ b/src/serializers/SvgSerializer.cpp @@ -1332,7 +1332,8 @@ void SvgSerializer::write(const geometry_data& data) { labels.push_back(ss.str() + "m"); for (auto lit = labels.begin(); lit != labels.end(); ++lit) { - const auto& l = *lit; + auto l = *lit; + IfcUtil::escape_xml(l); double dy = labels.begin() == lit ? 0.35 - (labels.size() - 1.) / 2. : 1.0; // <- dy is relative to the previous text element, so @@ -1500,7 +1501,8 @@ void SvgSerializer::write(const geometry_data& data) { ycoords.push_back(path.add(anchor_pt->Y())); path.add("\">"); for (auto lit = labels.begin(); lit != labels.end(); ++lit) { - const auto& l = *lit; + auto l = *lit; + IfcUtil::escape_xml(l); double dy = labels.begin() == lit ? 0.35 - (labels.size() - 1.) / 2. : 1.0; // <- dy is relative to the previous text element, so @@ -1617,7 +1619,8 @@ void SvgSerializer::write(const geometry_data& data) { } path.add(">"); for (auto lit = labels.begin(); lit != labels.end(); ++lit) { - const auto& l = *lit; + auto l = *lit; + IfcUtil::escape_xml(l); double dy = labels.begin() == lit ? 0.35 - (labels.size() - 1.) / 2. : 1.0; // <- dy is relative to the previous text element, so @@ -1943,7 +1946,8 @@ void SvgSerializer::addTextAnnotations(const drawing_key& k) { std::vector labels{ desc }; for (auto lit = labels.begin(); lit != labels.end(); ++lit) { - const auto& l = *lit; + auto l = *lit; + IfcUtil::escape_xml(l); double dy = labels.begin() == lit ? 0.0 // align bottom : 1.0; // <- dy is relative to the previous text element, so