added the close and getattribute methods of XmlTextReader. added the

* xmlreader.c doc/libxml2-api.xml: added the close and getattribute
  methods of XmlTextReader.
* python/generator.py python/libxml_wrap.h python/types.c
  python/libxml2class.txt: added the reader to the Python bindings
* python/tests/Makefile.am python/tests/reader.py: added a specific
  test for the Python bindings of the Reader APIs
* parser.c: small cleanup.
Daniel
diff --git a/parser.c b/parser.c
index 6690826..f68c424 100644
--- a/parser.c
+++ b/parser.c
@@ -1769,7 +1769,8 @@
 	    int first = CUR_SCHAR(cur, l);
 
 	    if (!IS_LETTER(first) && (first != '_')) {
-		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+		if ((ctxt != NULL) && (ctxt->sax != NULL) &&
+		    (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 			    "Name %s is not XML Namespace compliant\n",
 			             name);
@@ -1790,7 +1791,8 @@
 	    
 	    buffer = (xmlChar *) xmlMalloc(max * sizeof(xmlChar));
 	    if (buffer == NULL) {
-		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+		if ((ctxt != NULL) && (ctxt->sax != NULL) &&
+	            (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
 				     "xmlSplitQName: out of memory\n");
 		return(NULL);
@@ -1802,7 +1804,8 @@
 		    buffer = (xmlChar *) xmlRealloc(buffer,
 						    max * sizeof(xmlChar));
 		    if (buffer == NULL) {
-			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
+			if ((ctxt != NULL) && (ctxt->sax != NULL) &&
+			    (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
 					     "xmlSplitQName: out of memory\n");
 			return(NULL);