From 565c88f1e7126e1819d9caac55a346c5e6b3dbe0 Mon Sep 17 00:00:00 2001 From: Andres Mejia Date: Wed, 9 May 2012 23:24:54 -0400 Subject: [PATCH] Fix issue where parsing XML character entries are ignored. Fixes issue #12999. --- xbmc/utils/XBMCTinyXML.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xbmc/utils/XBMCTinyXML.cpp b/xbmc/utils/XBMCTinyXML.cpp index 6e8ac4a7e..82e24514f 100644 --- a/xbmc/utils/XBMCTinyXML.cpp +++ b/xbmc/utils/XBMCTinyXML.cpp @@ -21,7 +21,7 @@ #include "filesystem/File.h" #include "RegExp.h" -#define MAX_ENTITY_LENGTH 6 // size of largest entity "'" +#define MAX_ENTITY_LENGTH 8 // size of largest entity "&#xNNNN;" #define BUFFER_SIZE 4096 CXBMCTinyXML::CXBMCTinyXML() @@ -130,7 +130,7 @@ const char *CXBMCTinyXML::Parse(CStdString &data, TiXmlParsingData *prevData, Ti // Preprocess string, replacing '&' with '& for invalid XML entities size_t pos = 0; CRegExp re(true); - re.RegComp("^&(amp|lt|gt|quot|apos);.*"); + re.RegComp("^&(amp|lt|gt|quot|apos|#x[a-fA-F0-9]{1,4});.*"); while ((pos = data.find("&", pos)) != CStdString::npos) { CStdString tmp = data.substr(pos, pos + MAX_ENTITY_LENGTH); @@ -149,7 +149,7 @@ bool CXBMCTinyXML::Test() "cache=\"tmdb-en-12244.json\">" "http://api.themoviedb.org/3/movie/12244" "?api_key=57983e31fb435df4df77afb854740ea9" - "&language=en"); + "&language=enaf;Ư"); doc.Parse(data.c_str()); TiXmlNode *root = doc.RootElement(); if (root && root->ValueStr() == "details")