diff --git a/ChangeLog b/ChangeLog
index 5e5883f..11a6162 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Mon Oct 14 13:12:55 CEST 2002 Daniel Veillard <daniel@veillard.com>
+
+	* parser.c: Christian Glahn found a small bug in the push parser.
+	* xmlIO.c include/libxml/xmlIO.h: cleaned up and made xmlCheckFilename
+	  public
+
 Wed Oct  9 23:11:02 CEST 2002 Daniel Veillard <daniel@veillard.com>
 
 	* xmlschemas.c include/libxml/xmlschemas.h: added
diff --git a/include/libxml/xmlIO.h b/include/libxml/xmlIO.h
index 7daa717..d0ef8d6 100644
--- a/include/libxml/xmlIO.h
+++ b/include/libxml/xmlIO.h
@@ -254,6 +254,7 @@
 
 xmlChar *xmlNormalizeWindowsPath	(const xmlChar *path);
 
+int	xmlCheckFilename		(const char *path);
 /**
  * Default 'file://' protocol callbacks 
  */
diff --git a/parser.c b/parser.c
index 7311c9e..2c57954 100644
--- a/parser.c
+++ b/parser.c
@@ -8894,6 +8894,14 @@
 	/*
 	 * Check for termination
 	 */
+	    int avail = 0;
+	    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);
+			    
 	if ((ctxt->instate != XML_PARSER_EOF) &&
 	    (ctxt->instate != XML_PARSER_EPILOG)) {
 	    ctxt->errNo = XML_ERR_DOCUMENT_END;
@@ -8903,6 +8911,15 @@
 	    ctxt->wellFormed = 0;
 	    ctxt->disableSAX = 1;
 	} 
+	if ((ctxt->instate == XML_PARSER_EPILOG) && (avail > 0)) {
+	    ctxt->errNo = XML_ERR_DOCUMENT_END;
+	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+		ctxt->sax->error(ctxt->userData,
+		    "Extra content at the end of the document\n");
+	    ctxt->wellFormed = 0;
+	    ctxt->disableSAX = 1;
+
+	}
 	if (ctxt->instate != XML_PARSER_EOF) {
 	    if ((ctxt->sax) && (ctxt->sax->endDocument != NULL))
 		ctxt->sax->endDocument(ctxt->userData);
diff --git a/xmlIO.c b/xmlIO.c
index 796c8ac..0972e3f 100644
--- a/xmlIO.c
+++ b/xmlIO.c
@@ -261,25 +261,22 @@
  * returns 1.  if stat fails, returns 0 (if calling
  * stat on the filename fails, it can't be right).
  * if stat succeeds and the file is a directory,
- * sets errno to EISDIR and returns 0.  otherwise
- * returns 1.
+ * returns 2.  otherwise returns 1.
  */
 
-static int
+int
 xmlCheckFilename (const char *path)
 {
 #ifdef HAVE_STAT
-#ifdef S_ISDIR
     struct stat stat_buffer;
 
     if (stat(path, &stat_buffer) == -1)
         return 0;
 
+#ifdef S_ISDIR
     if (S_ISDIR(stat_buffer.st_mode)) {
-        errno = EISDIR;
-        return 0;
+        return 2;
     }
-
 #endif
 #endif
     return 1;
@@ -992,7 +989,7 @@
 xmlFreeHTTPWriteCtxt( xmlIOHTTPWriteCtxtPtr ctxt )
 {
     if ( ctxt->uri != NULL )
-	free( ctxt->uri );
+	xmlFree( ctxt->uri );
 
     if ( ctxt->doc_buff != NULL ) {
 
@@ -1007,7 +1004,7 @@
 	}
     }
 
-    free( ctxt );
+    xmlFree( ctxt );
     return;
 }
 
