mirror of
https://github.com/GNOME/libxml2.git
synced 2025-02-23 18:29:14 +08:00
fixed a push/encoding bug reported by Michael on librsvg Daniel
* parser.c: fixed a push/encoding bug reported by Michael on librsvg Daniel
This commit is contained in:
parent
7839e16128
commit
158a4d2767
@ -1,3 +1,8 @@
|
||||
Wed Feb 20 23:16:08 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* parser.c: fixed a push/encoding bug reported by Michael
|
||||
on librsvg
|
||||
|
||||
Wed Feb 20 19:54:05 CET 2002 Daniel Veillard <daniel@veillard.com>
|
||||
|
||||
* include/libxml/parserInternals.h: fixes a misplaced #endif
|
||||
|
24
parser.c
24
parser.c
@ -7929,8 +7929,28 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
|
||||
if (ctxt->input ==NULL) break;
|
||||
if (ctxt->input->buf == NULL)
|
||||
avail = ctxt->input->length - (ctxt->input->cur - ctxt->input->base);
|
||||
else
|
||||
avail = ctxt->input->buf->buffer->use - (ctxt->input->cur - ctxt->input->base);
|
||||
else {
|
||||
/*
|
||||
* If we are operating on converted input, try to flush
|
||||
* remainng chars to avoid them stalling in the non-converted
|
||||
* buffer.
|
||||
*/
|
||||
if ((ctxt->input->buf->raw != NULL) &&
|
||||
(ctxt->input->buf->raw->use > 0)) {
|
||||
int base = ctxt->input->base -
|
||||
ctxt->input->buf->buffer->content;
|
||||
int current = ctxt->input->cur - ctxt->input->base;
|
||||
|
||||
xmlParserInputBufferPush(ctxt->input->buf, 0, "");
|
||||
ctxt->input->base = ctxt->input->buf->buffer->content + base;
|
||||
ctxt->input->cur = ctxt->input->base + current;
|
||||
ctxt->input->end =
|
||||
&ctxt->input->buf->buffer->content[
|
||||
ctxt->input->buf->buffer->use];
|
||||
}
|
||||
avail = ctxt->input->buf->buffer->use -
|
||||
(ctxt->input->cur - ctxt->input->base);
|
||||
}
|
||||
if (avail < 1)
|
||||
goto done;
|
||||
switch (ctxt->instate) {
|
||||
|
Loading…
Reference in New Issue
Block a user