Adding various checks on node type though the API

Specifially checking against namespace nodes before accessing node
pointers
diff --git a/xpointer.c b/xpointer.c
index 0b463dd..ce771bd 100644
--- a/xpointer.c
+++ b/xpointer.c
@@ -134,7 +134,7 @@
 static int
 xmlXPtrGetArity(xmlNodePtr cur) {
     int i;
-    if (cur == NULL) 
+    if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
 	return(-1);
     cur = cur->children;
     for (i = 0;cur != NULL;cur = cur->next) {
@@ -157,7 +157,7 @@
 static int
 xmlXPtrGetIndex(xmlNodePtr cur) {
     int i;
-    if (cur == NULL) 
+    if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
 	return(-1);
     for (i = 1;cur != NULL;cur = cur->prev) {
 	if ((cur->type == XML_ELEMENT_NODE) ||
@@ -179,7 +179,7 @@
 static xmlNodePtr
 xmlXPtrGetNthChild(xmlNodePtr cur, int no) {
     int i;
-    if (cur == NULL) 
+    if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
 	return(cur);
     cur = cur->children;
     for (i = 0;i <= no;cur = cur->next) {
@@ -1444,11 +1444,13 @@
 	return(NULL);
     start = (xmlNodePtr) range->user;
 
-    if (start == NULL)
+    if ((start == NULL) || (start->type == XML_NAMESPACE_DECL))
 	return(NULL);
     end = range->user2;
     if (end == NULL)
 	return(xmlCopyNode(start, 1));
+    if (end->type == XML_NAMESPACE_DECL)
+        return(NULL);
 
     cur = start;
     index1 = range->index;
@@ -2304,7 +2306,7 @@
 xmlNodePtr
 xmlXPtrAdvanceNode(xmlNodePtr cur, int *level) {
 next:
-    if (cur == NULL)
+    if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
 	return(NULL);
     if (cur->children != NULL) {
         cur = cur->children ;
@@ -2362,7 +2364,7 @@
     if ((node == NULL) || (indx == NULL))
 	return(-1);
     cur = *node;
-    if (cur == NULL)
+    if ((cur == NULL) || (cur->type == XML_NAMESPACE_DECL))
 	return(-1);
     pos = *indx;
 
@@ -2453,9 +2455,10 @@
 
     if (string == NULL)
 	return(-1);
-    if (start == NULL)
+    if ((start == NULL) || (start->type == XML_NAMESPACE_DECL))
 	return(-1);
-    if ((end == NULL) || (endindex == NULL))
+    if ((end == NULL) || (*end == NULL) ||
+        ((*end)->type == XML_NAMESPACE_DECL) || (endindex == NULL))
 	return(-1);
     cur = start;
     if (cur == NULL)
@@ -2538,13 +2541,12 @@
 
     if (string == NULL)
 	return(-1);
-    if ((start == NULL) || (startindex == NULL))
+    if ((start == NULL) || (*start == NULL) ||
+        ((*start)->type == XML_NAMESPACE_DECL) || (startindex == NULL))
 	return(-1);
     if ((end == NULL) || (endindex == NULL))
 	return(-1);
     cur = *start;
-    if (cur == NULL)
-	return(-1);
     pos = *startindex - 1;
     first = string[0];
 
@@ -2618,14 +2620,12 @@
     xmlNodePtr cur;
     int pos, len = 0;
 
-    if ((node == NULL) || (indx == NULL))
+    if ((node == NULL) || (*node == NULL) ||
+        ((*node)->type == XML_NAMESPACE_DECL) || (indx == NULL))
 	return(-1);
     cur = *node;
     pos = *indx;
 
-    if (cur == NULL)
-	return(-1);
-
     if ((cur->type == XML_ELEMENT_NODE) ||
 	(cur->type == XML_DOCUMENT_NODE) ||
 	(cur->type == XML_HTML_DOCUMENT_NODE)) {