Skip to content

Commit

Permalink
- parser.c: fixed UTF8 BOM support in push mode
Browse files Browse the repository at this point in the history
- test/utf8bom.xml result/utf8bom.xml result/noent/utf8bom.xml:
  added a specific testcase
Daniel
  • Loading branch information
Daniel Veillard committed Jun 28, 2001
1 parent 3e5bb8e commit 0e4cd17
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 8 deletions.
6 changes: 6 additions & 0 deletions ChangeLog
@@ -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
Expand Down
37 changes: 29 additions & 8 deletions parser.c
Expand Up @@ -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];
Expand Down Expand Up @@ -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);

Expand All @@ -8523,6 +8540,10 @@ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax, void *user_data,
#endif
}

if (enc != XML_CHAR_ENCODING_NONE) {
xmlSwitchEncoding(ctxt, enc);
}

return(ctxt);
}

Expand Down
2 changes: 2 additions & 0 deletions result/noent/utf8bom.xml
@@ -0,0 +1,2 @@
<?xml version="1.0"?>
<foo/>
2 changes: 2 additions & 0 deletions result/utf8bom.xml
@@ -0,0 +1,2 @@
<?xml version="1.0"?>
<foo/>
1 change: 1 addition & 0 deletions test/utf8bom.xml
@@ -0,0 +1 @@
<foo/>

0 comments on commit 0e4cd17

Please sign in to comment.