1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2024-10-26 12:25:09 +03:00

- parser.c: fixed UTF8 BOM support in push mode

- test/utf8bom.xml result/utf8bom.xml result/noent/utf8bom.xml:
  added a specific testcase
Daniel
This commit is contained in:
Daniel Veillard 2001-06-28 12:13:56 +00:00
parent 3e5bb8e54e
commit 0e4cd17b61
5 changed files with 40 additions and 8 deletions

View File

@ -1,3 +1,9 @@
Thu Jun 28 14:11:28 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
* parser.c: fixed UTF8 BOM support in push mode
* test/utf8bom.xml result/utf8bom.xml result/noent/utf8bom.xml:
added a specific testcase
Wed Jun 27 18:33:13 CEST 2001 Daniel Veillard <Daniel.Veillard@imag.fr>
* Makefile.am: added --push regression tests

View File

@ -7632,11 +7632,31 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
*/
goto done;
case XML_PARSER_START:
/*
* Very first chars read from the document flow.
*/
if (avail < 2)
goto done;
if (ctxt->charset == XML_CHAR_ENCODING_NONE) {
xmlChar start[4];
xmlCharEncoding enc;
/*
* Very first chars read from the document flow.
*/
if (avail < 4)
goto done;
/*
* Get the 4 first bytes and decode the charset
* if enc != XML_CHAR_ENCODING_NONE
* plug some encoding conversion routines.
*/
start[0] = RAW;
start[1] = NXT(1);
start[2] = NXT(2);
start[3] = NXT(3);
enc = xmlDetectCharEncoding(start, 4);
if (enc != XML_CHAR_ENCODING_NONE) {
xmlSwitchEncoding(ctxt, enc);
}
break;
}
cur = ctxt->input->cur[0];
next = ctxt->input->cur[1];
@ -8509,9 +8529,6 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
inputStream->cur = inputStream->buf->buffer->content;
inputStream->end =
&inputStream->buf->buffer->content[inputStream->buf->buffer->use];
if (enc != XML_CHAR_ENCODING_NONE) {
xmlSwitchEncoding(ctxt, enc);
}
inputPush(ctxt, inputStream);
@ -8523,6 +8540,10 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
#endif
}
if (enc != XML_CHAR_ENCODING_NONE) {
xmlSwitchEncoding(ctxt, enc);
}
return(ctxt);
}

2
result/noent/utf8bom.xml Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0"?>
<foo/>

2
result/utf8bom.xml Normal file
View File

@ -0,0 +1,2 @@
<?xml version="1.0"?>
<foo/>

1
test/utf8bom.xml Normal file
View File

@ -0,0 +1 @@
<foo/>