diff --git a/parser.c b/parser.c
index f1617a3..707bf8a 100644
--- a/parser.c
+++ b/parser.c
@@ -1688,7 +1688,7 @@
 	    if (buffer == NULL) {
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 		    ctxt->sax->error(ctxt->userData,
-			             "xmlParseName: out of memory\n");
+			             "xmlParseNameComplex: out of memory\n");
 		return(NULL);
 	    }
 	    memcpy(buffer, buf, len);
@@ -1708,7 +1708,7 @@
 		    if (buffer == NULL) {
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
-					     "xmlParseName: out of memory\n");
+				     "xmlParseNameComplex: out of memory\n");
 			return(NULL);
 		    }
 		}
@@ -1874,7 +1874,7 @@
 		    if (buffer == NULL) {
 			if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
 			    ctxt->sax->error(ctxt->userData,
-					     "xmlParseName: out of memory\n");
+				     "xmlParseNameComplex: out of memory\n");
 			return(NULL);
 		    }
 		}
@@ -3011,7 +3011,7 @@
 	}
 	SKIP_BLANKS;
 
-        name = xmlParseName(ctxt);
+        name = xmlParseNameComplex(ctxt);
 	if (name == NULL) {
 	    ctxt->errNo = XML_ERR_NOTATION_NOT_STARTED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -3129,7 +3129,7 @@
 	    isParameter = 1;
 	}
 
-        name = xmlParseName(ctxt);
+        name = xmlParseNameComplex(ctxt);
 	if (name == NULL) {
 	    ctxt->errNo = XML_ERR_NAME_REQUIRED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -3269,7 +3269,7 @@
 			ctxt->disableSAX = 1;
 		    }
 		    SKIP_BLANKS;
-		    ndata = xmlParseName(ctxt);
+		    ndata = xmlParseNameComplex(ctxt);
 		    if ((ctxt->sax != NULL) && (!ctxt->disableSAX) &&
 		        (ctxt->sax->unparsedEntityDecl != NULL))
 			ctxt->sax->unparsedEntityDecl(ctxt->userData, name,
@@ -3447,7 +3447,7 @@
     do {
         NEXT;
 	SKIP_BLANKS;
-        name = xmlParseName(ctxt);
+        name = xmlParseNameComplex(ctxt);
 	if (name == NULL) {
 	    ctxt->errNo = XML_ERR_NAME_REQUIRED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -3716,7 +3716,7 @@
 	    ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
-        elemName = xmlParseName(ctxt);
+        elemName = xmlParseNameComplex(ctxt);
 	if (elemName == NULL) {
 	    ctxt->errNo = XML_ERR_NAME_REQUIRED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -3736,7 +3736,7 @@
 
 	    GROW;
             tree = NULL;
-	    attrName = xmlParseName(ctxt);
+	    attrName = xmlParseNameComplex(ctxt);
 	    if (attrName == NULL) {
 		ctxt->errNo = XML_ERR_NAME_REQUIRED;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -3919,7 +3919,7 @@
 		xmlFree(elem);
 	    }
 	    SKIP_BLANKS;
-	    elem = xmlParseName(ctxt);
+	    elem = xmlParseNameComplex(ctxt);
 	    if (elem == NULL) {
 		ctxt->errNo = XML_ERR_NAME_REQUIRED;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -4016,7 +4016,7 @@
 	SKIP_BLANKS;
 	GROW;
     } else {
-	elem = xmlParseName(ctxt);
+	elem = xmlParseNameComplex(ctxt);
 	if (elem == NULL) {
 	    ctxt->errNo = XML_ERR_ELEMCONTENT_NOT_STARTED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -4159,7 +4159,7 @@
 	    last = xmlParseElementChildrenContentDecl(ctxt);
 	    SKIP_BLANKS;
 	} else {
-	    elem = xmlParseName(ctxt);
+	    elem = xmlParseNameComplex(ctxt);
 	    if (elem == NULL) {
 		ctxt->errNo = XML_ERR_ELEMCONTENT_NOT_STARTED;
 		if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -4308,7 +4308,7 @@
 	    ctxt->disableSAX = 1;
 	}
         SKIP_BLANKS;
-        name = xmlParseName(ctxt);
+        name = xmlParseNameComplex(ctxt);
 	if (name == NULL) {
 	    ctxt->errNo = XML_ERR_NAME_REQUIRED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
@@ -5443,7 +5443,7 @@
 
     if (RAW == '%') {
         NEXT;
-        name = xmlParseName(ctxt);
+        name = xmlParseNameComplex(ctxt);
 	if (name == NULL) {
 	    ctxt->errNo = XML_ERR_NAME_REQUIRED;
 	    if ((ctxt->sax != NULL) && (ctxt->sax->error != NULL))
