path handling bug introduced by my recent machinations fixed
diff --git a/parser.c b/parser.c
index 4cfcfe5..9078c0c 100644
--- a/parser.c
+++ b/parser.c
@@ -10342,6 +10342,7 @@
 {
     xmlParserCtxtPtr ctxt;
     xmlParserInputPtr inputStream;
+    char *canonicFilename;
     char *directory = NULL;
 
     ctxt = xmlNewParserCtxt();
@@ -10352,7 +10353,16 @@
 	return(NULL);
     }
 
-    inputStream = xmlLoadExternalEntity(filename, NULL, ctxt);
+    canonicFilename = xmlCanonicPath(filename);
+    if (canonicFilename == NULL) {
+	if (xmlDefaultSAXHandler.error != NULL) {
+	    xmlDefaultSAXHandler.error(NULL, "out of memory\n");
+	}
+	return(NULL);
+    }
+    
+    inputStream = xmlLoadExternalEntity(canonicFilename, NULL, ctxt);
+    xmlFree(canonicFilename);
     if (inputStream == NULL) {
 	xmlFreeParserCtxt(ctxt);
 	return(NULL);