dohh I really didn't intended to commit this test version :-( Daniel

* HTMLparser.c error.c parser.c parserInternals.c tree.c xmlIO.c
  include/libxml/tree.h: dohh I really didn't intended to commit
  this test version :-(
Daniel
diff --git a/parserInternals.c b/parserInternals.c
index ca84b19..68ac538 100644
--- a/parserInternals.c
+++ b/parserInternals.c
@@ -993,7 +993,6 @@
     if (in->base == NULL) return(-1);
     if (in->cur == NULL) return(-1);
     if (in->buf->buffer == NULL) return(-1);
-    if (in->buf->buffer->alloc == XML_BUFFER_ALLOC_UNMUTABLE) return(-1);
 
     CHECK_BUFFER(in);
 
@@ -1049,7 +1048,6 @@
     if (in->base == NULL) return;
     if (in->cur == NULL) return;
     if (in->buf->buffer == NULL) return;
-    if (in->buf->buffer->alloc == XML_BUFFER_ALLOC_UNMUTABLE) return;
 
     CHECK_BUFFER(in);
 
@@ -1103,13 +1101,9 @@
 
 void
 xmlNextChar(xmlParserCtxtPtr ctxt) {
-    int avail;
-
     if (ctxt->instate == XML_PARSER_EOF)
 	return;
 
-    avail = ctxt->input->end - ctxt->input->cur;
-
     /*
      *   2.11 End-of-Line Handling
      *   the literal two-character sequence "#xD#xA" or a standalone
@@ -1118,8 +1112,7 @@
      */
     if (ctxt->token != 0) ctxt->token = 0;
     else if (ctxt->charset == XML_CHAR_ENCODING_UTF8) {
-	if (((ctxt->input->cur >= ctxt->input->end) ||
-	     (*ctxt->input->cur == 0)) &&
+	if ((*ctxt->input->cur == 0) &&
 	    (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0) &&
 	    (ctxt->instate != XML_PARSER_COMMENT)) {
 	        /*
@@ -1133,14 +1126,6 @@
 	    if (*(ctxt->input->cur) == '\n') {
 		ctxt->input->line++; ctxt->input->col = 1;
 	    } else ctxt->input->col++;
-
-	    if (avail < 4) {
-		xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
-		avail = ctxt->input->end - ctxt->input->cur;
-	    }
-	    if (avail < 1)
-		return;
-
 	    if (ctxt->charset == XML_CHAR_ENCODING_UTF8) {
 		/*
 		 * We are supposed to handle UTF8, check it's valid
@@ -1158,15 +1143,21 @@
 
 		c = *cur;
 		if (c & 0x80) {
-		    if ((avail < 2) || (cur[1] & 0xc0) != 0x80)
+		    if (cur[1] == 0)
+			xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
+		    if ((cur[1] & 0xc0) != 0x80)
 			goto encoding_error;
 		    if ((c & 0xe0) == 0xe0) {
 			unsigned int val;
 
-			if ((avail < 3) || ((cur[2] & 0xc0) != 0x80))
+			if (cur[2] == 0)
+			    xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
+			if ((cur[2] & 0xc0) != 0x80)
 			    goto encoding_error;
 			if ((c & 0xf0) == 0xf0) {
-			    if ((avail < 4) || ((c & 0xf8) != 0xf0) ||
+			    if (cur[3] == 0)
+				xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
+			    if (((c & 0xf8) != 0xf0) ||
 				((cur[3] & 0xc0) != 0x80))
 				goto encoding_error;
 			    /* 4-byte code */
@@ -1208,18 +1199,18 @@
 	        ctxt->input->cur++;
 	    }
 	    ctxt->nbChars++;
+	    if (*ctxt->input->cur == 0)
+		xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
 	}
     } else {
 	ctxt->input->cur++;
 	ctxt->nbChars++;
-	if (avail < 1) {
+	if (*ctxt->input->cur == 0)
 	    xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
-	    avail = ctxt->input->end - ctxt->input->cur;
-	}
     }
-    if ((avail > 1) && (*ctxt->input->cur == '%') && (!ctxt->html))
+    if ((*ctxt->input->cur == '%') && (!ctxt->html))
 	xmlParserHandlePEReference(ctxt);
-    if ((avail < 1) &&
+    if ((*ctxt->input->cur == 0) &&
         (xmlParserInputGrow(ctxt->input, INPUT_CHUNK) <= 0))
 	    xmlPopInput(ctxt);
     return;
@@ -1232,34 +1223,17 @@
      * encoding !)
      */
     if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) {
-	xmlChar bytes[4];
-	if (avail > 3)
-	    bytes[3] = ctxt->input->cur[3];
-	else
-	    bytes[3] = 0;
-	if (avail > 2)
-	    bytes[2] = ctxt->input->cur[2];
-	else
-	    bytes[2] = 0;
-	if (avail > 1)
-	    bytes[1] = ctxt->input->cur[1];
-	else
-	    bytes[1] = 0;
-	if (avail > 0)
-	    bytes[0] = ctxt->input->cur[0];
-	else
-	    bytes[0] = 0;
 	ctxt->sax->error(ctxt->userData, 
 			 "Input is not proper UTF-8, indicate encoding !\n");
 	ctxt->sax->error(ctxt->userData, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
-		         bytes[0], bytes[1],bytes[2],bytes[3]);
+			ctxt->input->cur[0], ctxt->input->cur[1],
+			ctxt->input->cur[2], ctxt->input->cur[3]);
     }
     ctxt->wellFormed = 0;
     ctxt->errNo = XML_ERR_INVALID_ENCODING;
 
     ctxt->charset = XML_CHAR_ENCODING_8859_1; 
-    if (avail > 1)
-	ctxt->input->cur++;
+    ctxt->input->cur++;
     return;
 }
 
@@ -1283,8 +1257,6 @@
 
 int
 xmlCurrentChar(xmlParserCtxtPtr ctxt, int *len) {
-    int avail;
-
     if (ctxt->instate == XML_PARSER_EOF)
 	return(0);
 
@@ -1292,18 +1264,9 @@
 	*len = 0;
 	return(ctxt->token);
     }	
-    avail = ctxt->input->end - ctxt->input->cur;
-    if (avail < 4) {
-	xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
-	avail = ctxt->input->end - ctxt->input->cur;
-    }
-    if (avail < 1)
-	return(0);
-
-    if ((avail > 1) &&
-	(*ctxt->input->cur >= 0x20) && (*ctxt->input->cur <= 0x7F)) {
-	*len = 1;
-	return((int) *ctxt->input->cur);
+    if ((*ctxt->input->cur >= 0x20) && (*ctxt->input->cur <= 0x7F)) {
+	    *len = 1;
+	    return((int) *ctxt->input->cur);
     }
     if (ctxt->charset == XML_CHAR_ENCODING_UTF8) {
 	/*
@@ -1323,15 +1286,20 @@
 
 	c = *cur;
 	if (c & 0x80) {
-	    if ((avail < 2) || (cur[1] & 0xc0) != 0x80)
+	    if (cur[1] == 0)
+		xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
+	    if ((cur[1] & 0xc0) != 0x80)
 		goto encoding_error;
 	    if ((c & 0xe0) == 0xe0) {
-		if ((avail < 3) || ((cur[2] & 0xc0) != 0x80))
+
+		if (cur[2] == 0)
+		    xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
+		if ((cur[2] & 0xc0) != 0x80)
 		    goto encoding_error;
 		if ((c & 0xf0) == 0xf0) {
 		    if (cur[3] == 0)
 			xmlParserInputGrow(ctxt->input, INPUT_CHUNK);
-		    if ((avail < 4) || ((c & 0xf8) != 0xf0) ||
+		    if (((c & 0xf8) != 0xf0) ||
 			((cur[3] & 0xc0) != 0x80))
 			goto encoding_error;
 		    /* 4-byte code */
@@ -1367,7 +1335,7 @@
 	    /* 1-byte code */
 	    *len = 1;
 	    if (*ctxt->input->cur == 0xD) {
-		if ((avail > 1) && (ctxt->input->cur[1] == 0xA)) {
+		if (ctxt->input->cur[1] == 0xA) {
 		    ctxt->nbChars++;
 		    ctxt->input->cur++;
 		}
@@ -1383,7 +1351,7 @@
      */
     *len = 1;
     if (*ctxt->input->cur == 0xD) {
-	if ((avail > 1) && (ctxt->input->cur[1] == 0xA)) {
+	if (ctxt->input->cur[1] == 0xA) {
 	    ctxt->nbChars++;
 	    ctxt->input->cur++;
 	}
@@ -1399,36 +1367,16 @@
      * encoding !)
      */
     if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL)) {
-	xmlChar bytes[4];
-	if (avail > 3)
-	    bytes[3] = ctxt->input->cur[3];
-	else
-	    bytes[3] = 0;
-	if (avail > 2)
-	    bytes[2] = ctxt->input->cur[2];
-	else
-	    bytes[2] = 0;
-	if (avail > 1)
-	    bytes[1] = ctxt->input->cur[1];
-	else
-	    bytes[1] = 0;
-	if (avail > 0)
-	    bytes[0] = ctxt->input->cur[0];
-	else
-	    bytes[0] = 0;
 	ctxt->sax->error(ctxt->userData, 
 			 "Input is not proper UTF-8, indicate encoding !\n");
 	ctxt->sax->error(ctxt->userData, "Bytes: 0x%02X 0x%02X 0x%02X 0x%02X\n",
-		         bytes[0], bytes[1],bytes[2],bytes[3]);
+			ctxt->input->cur[0], ctxt->input->cur[1],
+			ctxt->input->cur[2], ctxt->input->cur[3]);
     }
     ctxt->wellFormed = 0;
     ctxt->errNo = XML_ERR_INVALID_ENCODING;
 
     ctxt->charset = XML_CHAR_ENCODING_8859_1; 
-    if (avail < 1) {
-	*len = 0;
-	return(0);
-    }
     *len = 1;
     return((int) *ctxt->input->cur);
 }