From: jmarshallnz Date: Thu, 28 Nov 2013 04:31:15 +0000 (-0800) Subject: Merge pull request #3667 from Karlson2k/pcre_reports_more_01 X-Git-Tag: Gotham_alpha10~25 X-Git-Url: http://code.vuplus.com/gitweb/?a=commitdiff_plain;h=bd01e1e6333c67f0cdcc7c75091598338e07c22e;p=vuplus_xbmc Merge pull request #3667 from Karlson2k/pcre_reports_more_01 Put more data to log on RegExp UTF-8 errors --- bd01e1e6333c67f0cdcc7c75091598338e07c22e diff --cc xbmc/utils/RegExp.cpp index 7db40df,c3383a5..459deb2 --- a/xbmc/utils/RegExp.cpp +++ b/xbmc/utils/RegExp.cpp @@@ -237,13 -239,26 +239,26 @@@ int CRegExp::PrivateRegFind(size_t buff #ifdef PCRE_ERROR_SHORTUTF8 case PCRE_ERROR_SHORTUTF8: + { + const size_t startPos = (m_subject.length() > fragmentLen) ? CUtf8Utils::RFindValidUtf8Char(m_subject, m_subject.length() - fragmentLen) : 0; + if (startPos != std::string::npos) + CLog::Log(LOGERROR, "PCRE: Bad UTF-8 character at the end of string. Text before bad character: \"%s\"", m_subject.substr(startPos).c_str()); + else + CLog::Log(LOGERROR, "PCRE: Bad UTF-8 character at the end of string"); + return -1; + } #endif case PCRE_ERROR_BADUTF8: - CLog::Log(LOGERROR, "PCRE: Bad UTF-8 character"); - return -1; - + { + const size_t startPos = (m_iOvector[0] > fragmentLen) ? CUtf8Utils::RFindValidUtf8Char(m_subject, m_iOvector[0] - fragmentLen) : 0; + if (m_iOvector[0] >= 0 && startPos != std::string::npos) + CLog::Log(LOGERROR, "PCRE: Bad UTF-8 character, error code: %d, position: %d. Text before bad char: \"%s\"", m_iOvector[0], m_iOvector[1], m_subject.substr(startPos, m_iOvector[0] - startPos + 1).c_str()); + else + CLog::Log(LOGERROR, "PCRE: Bad UTF-8 character, error code: %d, position: %d", m_iOvector[0], m_iOvector[1]); + return -1; + } case PCRE_ERROR_BADUTF8_OFFSET: - CLog::Log(LOGERROR, "PCRE: Offset (%d) is pointing to the middle of UTF-8 character", startoffset); + CLog::Log(LOGERROR, "PCRE: Offset is pointing to the middle of UTF-8 character"); return -1; default: