1diff --git a/valid.c b/valid.c 2index 92aaedb..2ba5cdd 100644 3--- a/valid.c 4+++ b/valid.c 5@@ -5268,25 +5268,26 @@ xmlSnprintfElements(char *buf, int size, xmlNodePtr node, int glob) { 6 return; 7 } 8 switch (cur->type) { 9- case XML_ELEMENT_NODE: 10+ case XML_ELEMENT_NODE: { 11+ int qnameLen = xmlStrlen(cur->name); 12+ 13+ if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) 14+ qnameLen += xmlStrlen(cur->ns->prefix) + 1; 15+ if (size - len < qnameLen + 10) { 16+ if ((size - len > 4) && (buf[len - 1] != '.')) 17+ strcat(buf, " ..."); 18+ return; 19+ } 20 if ((cur->ns != NULL) && (cur->ns->prefix != NULL)) { 21- if (size - len < xmlStrlen(cur->ns->prefix) + 10) { 22- if ((size - len > 4) && (buf[len - 1] != '.')) 23- strcat(buf, " ..."); 24- return; 25- } 26 strcat(buf, (char *) cur->ns->prefix); 27 strcat(buf, ":"); 28 } 29- if (size - len < xmlStrlen(cur->name) + 10) { 30- if ((size - len > 4) && (buf[len - 1] != '.')) 31- strcat(buf, " ..."); 32- return; 33- } 34- strcat(buf, (char *) cur->name); 35- if (cur->next != NULL) 36- strcat(buf, " "); 37+ if (cur->name != NULL) 38+ strcat(buf, (char *) cur->name); 39+ if (cur->next != NULL) 40+ strcat(buf, " "); 41 break; 42+ } 43 case XML_TEXT_NODE: 44 if (xmlIsBlankNode(cur)) 45 break; 46