fixing a deallocation problem in xmlRelaxNGParse() in case of errors,

* relaxng.c: fixing a deallocation problem in xmlRelaxNGParse()
  in case of errors, should fix bug #338306
Daniel
diff --git a/ChangeLog b/ChangeLog
index 97b14f9..de1ac0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Apr 13 09:31:45 CEST 2006 Daniel Veillard <daniel@veillard.com>
+
+	* relaxng.c: fixing a deallocation problem in xmlRelaxNGParse() 
+	  in case of errors, should fix bug #338306
+
 Thu Apr  6 10:22:17 CEST 2006 Daniel Veillard <daniel@veillard.com>
 
 	* doc/xmlcatalog.1 doc/xmlcatalog_man.xml doc/xmllint.1 doc/xmllint.xml:
diff --git a/relaxng.c b/relaxng.c
index 59780c8..45eef13 100644
--- a/relaxng.c
+++ b/relaxng.c
@@ -7394,13 +7394,16 @@
     if (root == NULL) {
         xmlRngPErr(ctxt, (xmlNodePtr) doc,
 	           XML_RNGP_EMPTY, "xmlRelaxNGParse: %s is empty\n",
-                   ctxt->URL, NULL);
-        xmlFreeDoc(doc);
+                   (ctxt->URL ? ctxt->URL : "schemas"), NULL);
+	
+        xmlFreeDoc(ctxt->document);
+        ctxt->document = NULL;
         return (NULL);
     }
     ret = xmlRelaxNGParseDocument(ctxt, root);
     if (ret == NULL) {
-        xmlFreeDoc(doc);
+        xmlFreeDoc(ctxt->document);
+        ctxt->document = NULL;
         return (NULL);
     }