Finally commiting work done on the plane, major cleanup,
spread some serious anti bitrot all over the place:
- parserInternals.c parserInternals.h parser.c Makefile.am:
  created a new module parserInternals.c, moved most of the
  code shared by the various parsers there, as well as
  deprecated  code from parser.c. More cleanup of parser.c
- uri.c: fixed a problem when URI is NULL
- valid.c: speedup when looking for an attribute declaration
Daniel
diff --git a/uri.c b/uri.c
index efba43f..ec915e0 100644
--- a/uri.c
+++ b/uri.c
@@ -1467,6 +1467,11 @@
     xmlURIPtr bas = NULL;
     xmlURIPtr res = NULL;
 
+    if ((URI == NULL) && (base == NULL))
+	return(NULL);
+    if (URI == NULL)
+	return((xmlChar *) xmlMemStrdup((const char *) base));
+
     /*
      * 1) The URI reference is parsed into the potential four components and
      *    fragment identifier, as described in Section 4.3.