diff options
Diffstat (limited to 'core/fxcrt/xml/cfx_xmlparser.cpp')
-rw-r--r-- | core/fxcrt/xml/cfx_xmlparser.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/core/fxcrt/xml/cfx_xmlparser.cpp b/core/fxcrt/xml/cfx_xmlparser.cpp index 8292b33206..9336c11f87 100644 --- a/core/fxcrt/xml/cfx_xmlparser.cpp +++ b/core/fxcrt/xml/cfx_xmlparser.cpp @@ -10,6 +10,7 @@ #include <cwctype> #include <iterator> +#include "core/fxcrt/fx_codepage.h" #include "core/fxcrt/fx_extension.h" #include "core/fxcrt/fx_safe_types.h" #include "core/fxcrt/xml/cfx_xmlchardata.h" @@ -81,10 +82,10 @@ bool CFX_XMLParser::IsXMLNameChar(wchar_t ch, bool bFirstChar) { } CFX_XMLParser::CFX_XMLParser(CFX_XMLNode* pParent, - const RetainPtr<CFX_SeekableStreamProxy>& pStream) + const RetainPtr<IFX_SeekableStream>& pStream) : m_pParent(pParent), m_pChild(nullptr), - m_pStream(pStream), + m_pStream(pdfium::MakeRetain<CFX_SeekableStreamProxy>(pStream)), m_iXMLPlaneSize(1024), m_iCurrentPos(0), m_iCurrentNodeNum(-1), @@ -106,6 +107,12 @@ CFX_XMLParser::CFX_XMLParser(CFX_XMLNode* pParent, ASSERT(m_pParent); ASSERT(pStream); + uint16_t wCodePage = m_pStream->GetCodePage(); + if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && + wCodePage != FX_CODEPAGE_UTF8) { + m_pStream->SetCodePage(FX_CODEPAGE_UTF8); + } + m_NodeStack.push(m_pParent); m_CurNode.iNodeNum = -1; |