src/lib/VSDXTheme.cpp | 15 +++++++++------ src/lib/VSDXTheme.h | 4 ++-- 2 files changed, 11 insertions(+), 8 deletions(-)
New commits: commit afa9437bec26a156aebdd60bc05fa48d68067629 Author: David Tardon <dtar...@redhat.com> Date: Sun Nov 26 17:44:56 2017 +0100 ofz: ignore invalid/incomplete font entries Change-Id: Ic5e6cf0afe62e92fba1503a1a3540eb50800dc3c diff --git a/src/lib/VSDXTheme.cpp b/src/lib/VSDXTheme.cpp index da69059..8db16e9 100644 --- a/src/lib/VSDXTheme.cpp +++ b/src/lib/VSDXTheme.cpp @@ -219,8 +219,8 @@ void libvisio::VSDXTheme::readFont(xmlTextReaderPtr reader, int idToken, VSDXFon { int script; librevenge::RVNGString typeFace; - readTypeFace(reader, script, typeFace); - font.m_typeFaces[script] = typeFace; + if (readTypeFace(reader, script, typeFace) && !typeFace.empty()) + font.m_typeFaces[script] = typeFace; break; } default: @@ -230,7 +230,7 @@ void libvisio::VSDXTheme::readFont(xmlTextReaderPtr reader, int idToken, VSDXFon while ((idToken != tokenId || XML_READER_TYPE_END_ELEMENT != tokenType) && 1 == ret); } -void libvisio::VSDXTheme::readTypeFace(xmlTextReaderPtr reader, librevenge::RVNGString &typeFace) +bool libvisio::VSDXTheme::readTypeFace(xmlTextReaderPtr reader, librevenge::RVNGString &typeFace) { const shared_ptr<xmlChar> sTypeFace(xmlTextReaderGetAttribute(reader, BAD_CAST("typeface")), xmlFree); if (sTypeFace) @@ -238,18 +238,21 @@ void libvisio::VSDXTheme::readTypeFace(xmlTextReaderPtr reader, librevenge::RVNG typeFace.clear(); typeFace.sprintf("%s", (const char *)sTypeFace.get()); } + return bool(sTypeFace); } -void libvisio::VSDXTheme::readTypeFace(xmlTextReaderPtr reader, int &script, librevenge::RVNGString &typeFace) +bool libvisio::VSDXTheme::readTypeFace(xmlTextReaderPtr reader, int &script, librevenge::RVNGString &typeFace) { const shared_ptr<xmlChar> sScript(xmlTextReaderGetAttribute(reader, BAD_CAST("script")), xmlFree); + bool knownScript = false; if (sScript) { int token = libvisio::VSDXMLTokenMap::getTokenId(sScript.get()); - if (XML_TOKEN_INVALID != token) + knownScript = XML_TOKEN_INVALID != token; + if (knownScript) script = token; } - readTypeFace(reader, typeFace); + return readTypeFace(reader, typeFace) && knownScript; } void libvisio::VSDXTheme::readClrScheme(xmlTextReaderPtr reader) diff --git a/src/lib/VSDXTheme.h b/src/lib/VSDXTheme.h index e0de7c3..f600c96 100644 --- a/src/lib/VSDXTheme.h +++ b/src/lib/VSDXTheme.h @@ -94,8 +94,8 @@ private: void readVariationClrScheme(xmlTextReaderPtr reader, VSDXVariationClrScheme &varClrSch); void readFontScheme(xmlTextReaderPtr reader); void readFont(xmlTextReaderPtr reader, int idToken, VSDXFont &font); - void readTypeFace(xmlTextReaderPtr reader, librevenge::RVNGString &typeFace); - void readTypeFace(xmlTextReaderPtr reader, int &script, librevenge::RVNGString &typeFace); + bool readTypeFace(xmlTextReaderPtr reader, librevenge::RVNGString &typeFace); + bool readTypeFace(xmlTextReaderPtr reader, int &script, librevenge::RVNGString &typeFace); int getElementToken(xmlTextReaderPtr reader); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits