Hi

Attached the patch for the version I uploaded. Sorry, I forget to send
it beforehand, though it actually contains just the upstream cvs patch
which is already referred to in the bug log.

Cheers

Luk

-- 
Luk Claes - http://people.debian.org/~luk - GPG key 1024D/9B7C328D
Fingerprint:   D5AF 25FB 316B 53BB 08E7   F999 E544 DE07 9B7C 328D
diff -u libxml2-2.6.23/debian/changelog libxml2-2.6.23/debian/changelog
--- libxml2-2.6.23/debian/changelog
+++ libxml2-2.6.23/debian/changelog
@@ -1,3 +1,10 @@
+libxml2 (2.6.23-1.1) unstable; urgency=high
+
+  * Non-maintainer upload.
+  * Fix XML parser to unbreak xsltproc (Closes: #346594).
+
+ -- Luk Claes <[EMAIL PROTECTED]>  Thu, 12 Jan 2006 15:25:42 +0100
+
 libxml2 (2.6.23-1) unstable; urgency=low
 
   * New upstream release
only in patch2:
unchanged:
--- libxml2-2.6.23.orig/parser.c
+++ libxml2-2.6.23/parser.c
@@ -3539,16 +3539,12 @@
            ctxt->input->cur = in;
            if (*in == 0xD) {
                in++;
-               if (!*in)       /* if end of current chunk return */
-                   return;
                if (*in == 0xA) {
                    ctxt->input->cur = in;
                    in++;
                    ctxt->input->line++; ctxt->input->col = 1;
                    continue; /* while */
                }
-               if (!*in)       /* if end of current chunk return */
-                   return;
                in--;
            }
            if (*in == '<') {
@@ -3931,8 +3927,6 @@
                ctxt->input->line++; ctxt->input->col = 1;
                continue; /* while */
            }
-           if (!*in)   /* if end of current chunk return */
-               return;
            in--;
        }
        SHRINK;
@@ -10407,12 +10401,19 @@
 int
 xmlParseChunk(xmlParserCtxtPtr ctxt, const char *chunk, int size,
               int terminate) {
+    int end_in_lf = 0;
+    
     if (ctxt == NULL)
         return(XML_ERR_INTERNAL_ERROR);
     if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX == 1))
         return(ctxt->errNo);
     if (ctxt->instate == XML_PARSER_START)
         xmlDetectSAX2(ctxt);
+    if ((size > 0) && (chunk != NULL) && (!terminate) &&
+          (chunk[size - 1] == '\r')) {
+        end_in_lf = 1;
+       size--;
+    }
     if ((size > 0) && (chunk != NULL) && (ctxt->input != NULL) &&
         (ctxt->input->buf != NULL) && (ctxt->instate != XML_PARSER_EOF))  {
        int base = ctxt->input->base - ctxt->input->buf->buffer->content;
@@ -10451,6 +10452,10 @@
        }
     }
     xmlParseTryOrFinish(ctxt, terminate);
+    if ((end_in_lf == 1) && (ctxt->input != NULL) &&
+          (ctxt->input->buf != NULL)) {
+        xmlParserInputBufferPush(ctxt->input->buf, 1, "\r");
+    }
     if ((ctxt->errNo != XML_ERR_OK) && (ctxt->disableSAX == 1))
         return(ctxt->errNo);
     if (terminate) {

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to