• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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