fix: do not unescape xml sequences in filter mode
This commit is contained in:
parent
68fe25c8bf
commit
44bda888b5
|
@ -63,6 +63,7 @@ void HTMLParser::clear_input_flags()
|
||||||
char_was_escaped = false;
|
char_was_escaped = false;
|
||||||
escaped_chars_buffer.clear();
|
escaped_chars_buffer.clear();
|
||||||
escaped_char_index = 0;
|
escaped_char_index = 0;
|
||||||
|
filter_mode = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -173,6 +174,7 @@ void HTMLParser::filter(const wchar_t * in, std::wstring & out, bool clear_out_s
|
||||||
|
|
||||||
pchar_unicode = in;
|
pchar_unicode = in;
|
||||||
out_string = &out;
|
out_string = &out;
|
||||||
|
filter_mode = true;
|
||||||
|
|
||||||
if( clear_out_string )
|
if( clear_out_string )
|
||||||
out_string->clear();
|
out_string->clear();
|
||||||
|
@ -209,8 +211,8 @@ void HTMLParser::filter(const WTextStream & in, Stream & out, bool clear_out_str
|
||||||
|
|
||||||
wtext_stream_iterator = &begin;
|
wtext_stream_iterator = &begin;
|
||||||
wtext_stream_iterator_end = &end;
|
wtext_stream_iterator_end = &end;
|
||||||
|
|
||||||
out_stream = &out;
|
out_stream = &out;
|
||||||
|
filter_mode = true;
|
||||||
|
|
||||||
if( clear_out_stream )
|
if( clear_out_stream )
|
||||||
out_stream->clear();
|
out_stream->clear();
|
||||||
|
@ -232,6 +234,7 @@ HTMLParser::Status HTMLParser::filter_file(const char * file_name, std::wstring
|
||||||
file.open(file_name, std::ios_base::binary | std::ios_base::in);
|
file.open(file_name, std::ios_base::binary | std::ios_base::in);
|
||||||
|
|
||||||
out_string = &out;
|
out_string = &out;
|
||||||
|
filter_mode = true;
|
||||||
|
|
||||||
if( clear_out_stream )
|
if( clear_out_stream )
|
||||||
out_string->clear();
|
out_string->clear();
|
||||||
|
@ -2383,7 +2386,7 @@ int HTMLParser::read_char()
|
||||||
{
|
{
|
||||||
read_char_no_escape();
|
read_char_no_escape();
|
||||||
|
|
||||||
if( lastc == '&' )
|
if( !filter_mode && lastc == '&' )
|
||||||
{
|
{
|
||||||
read_xml_entity();
|
read_xml_entity();
|
||||||
|
|
||||||
|
|
|
@ -310,6 +310,12 @@ protected:
|
||||||
std::wstring escaped_chars_buffer;
|
std::wstring escaped_chars_buffer;
|
||||||
size_t escaped_char_index;
|
size_t escaped_char_index;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* filter mode, a method filter(...) was called
|
||||||
|
* in filter mode we do not unescape xml sequences such as < > ...
|
||||||
|
*/
|
||||||
|
bool filter_mode;
|
||||||
|
|
||||||
|
|
||||||
void clear_input_flags();
|
void clear_input_flags();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue