Patch for HP compilers and patch to xmllint.c from Sven Heinicke, Daniel
diff --git a/xmllint.c b/xmllint.c
index 18805f7..d661df9 100644
--- a/xmllint.c
+++ b/xmllint.c
@@ -426,30 +426,39 @@
 	    xmlSAXHandler silent, *old;
 
 	    ctxt = xmlCreateFileParserCtxt(filename);
-	    memcpy(&silent, ctxt->sax, sizeof(silent));
-	    old = ctxt->sax;
-	    silent.error = xmlHTMLError;
-	    if (xmlGetWarningsDefaultValue)
+
+	    if (ctxt == NULL) {	      
+	      /* If xmlCreateFileParseCtxt() return NULL something
+		 strange happened so we don't want to do anything.  Do
+		 we want to print an error message here?
+		 <sven@zen.org> */
+	      doc == NULL;
+	    } else {
+	      memcpy(&silent, ctxt->sax, sizeof(silent));
+	      old = ctxt->sax;
+	      silent.error = xmlHTMLError;
+	      if (xmlGetWarningsDefaultValue)
 		silent.warning = xmlHTMLWarning;
-	    else 
+	      else 
 		silent.warning = NULL;
-	    silent.fatalError = xmlHTMLError;
-            ctxt->sax = &silent;
-	    ctxt->vctxt.error = xmlHTMLValidityError;
-	    if (xmlGetWarningsDefaultValue)
+	      silent.fatalError = xmlHTMLError;
+	      ctxt->sax = &silent;
+	      ctxt->vctxt.error = xmlHTMLValidityError;
+	      if (xmlGetWarningsDefaultValue)
 		ctxt->vctxt.warning = xmlHTMLValidityWarning;
-	    else 
+	      else 
 		ctxt->vctxt.warning = NULL;
 
-	    xmlParseDocument(ctxt);
+	      xmlParseDocument(ctxt);
 
-	    ret = ctxt->wellFormed;
-	    doc = ctxt->myDoc;
-	    ctxt->sax = old;
-	    xmlFreeParserCtxt(ctxt);
-	    if (!ret) {
+	      ret = ctxt->wellFormed;
+	      doc = ctxt->myDoc;
+	      ctxt->sax = old;
+	      xmlFreeParserCtxt(ctxt);
+	      if (!ret) {
 		xmlFreeDoc(doc);
 		doc = NULL;
+	      }
 	    }
 #ifdef HAVE_SYS_MMAN_H
 	} else if (memory) {
@@ -473,6 +482,14 @@
     }
 #endif
 
+    /*
+     * If we don't have a document we might as well give up.  Do we
+     * want an error message here?  <sven@zen.org> */
+    if (doc == NULL)
+      {
+	return;
+      }
+
 #ifdef LIBXML_DEBUG_ENABLED
     /*
      * shell interraction
@@ -703,3 +720,4 @@
 
     return(0);
 }
+