--- parser.c +++ parser.c @@ -1052,7 +1052,7 @@ struct _xmlDefAttrs { int nbAttrs; /* number of defaulted attributes on that element */ int maxAttrs; /* the size of the array */ - const xmlChar *values[5]; /* array of localname/prefix/values/external */ + const xmlChar *values[1][5]; /* array of localname/prefix/values/external */ }; /** @@ -1244,17 +1244,17 @@ prefix = xmlDictLookup(ctxt->dict, fullattr, len); } - defaults->values[5 * defaults->nbAttrs] = name; - defaults->values[5 * defaults->nbAttrs + 1] = prefix; + defaults->values[defaults->nbAttrs][0] = name; + defaults->values[defaults->nbAttrs][1] = prefix; /* intern the string and precompute the end */ len = xmlStrlen(value); value = xmlDictLookup(ctxt->dict, value, len); - defaults->values[5 * defaults->nbAttrs + 2] = value; - defaults->values[5 * defaults->nbAttrs + 3] = value + len; + defaults->values[defaults->nbAttrs][2] = value; + defaults->values[defaults->nbAttrs][3] = value + len; if (ctxt->external) - defaults->values[5 * defaults->nbAttrs + 4] = BAD_CAST "external"; + defaults->values[defaults->nbAttrs][4] = BAD_CAST "external"; else - defaults->values[5 * defaults->nbAttrs + 4] = NULL; + defaults->values[defaults->nbAttrs][4] = NULL; defaults->nbAttrs++; return; @@ -9474,8 +9474,8 @@ defaults = xmlHashLookup2(ctxt->attsDefault, localname, prefix); if (defaults != NULL) { for (i = 0;i < defaults->nbAttrs;i++) { - attname = defaults->values[5 * i]; - aprefix = defaults->values[5 * i + 1]; + attname = defaults->values[i][0]; + aprefix = defaults->values[i][1]; /* * special work for namespaces defaulted defs @@ -9490,9 +9490,9 @@ if (j <= nbNs) continue; nsname = xmlGetNamespace(ctxt, NULL); - if (nsname != defaults->values[5 * i + 2]) { + if (nsname != defaults->values[i][2]) { if (nsPush(ctxt, NULL, - defaults->values[5 * i + 2]) > 0) + defaults->values[i][2]) > 0) nbNs++; } } else if (aprefix == ctxt->str_xmlns) { @@ -9505,9 +9505,9 @@ if (j <= nbNs) continue; nsname = xmlGetNamespace(ctxt, attname); - if (nsname != defaults->values[2]) { + if (nsname != defaults->values[0][2]) { if (nsPush(ctxt, attname, - defaults->values[5 * i + 2]) > 0) + defaults->values[i][2]) > 0) nbNs++; } } else { @@ -9533,10 +9533,10 @@ atts[nbatts++] = NULL; else atts[nbatts++] = xmlGetNamespace(ctxt, aprefix); - atts[nbatts++] = defaults->values[5 * i + 2]; - atts[nbatts++] = defaults->values[5 * i + 3]; + atts[nbatts++] = defaults->values[i][2]; + atts[nbatts++] = defaults->values[i][3]; if ((ctxt->standalone == 1) && - (defaults->values[5 * i + 4] != NULL)) { + (defaults->values[i][4] != NULL)) { xmlValidityError(ctxt, XML_DTD_STANDALONE_DEFAULTED, "standalone: attribute %s on %s defaulted from external subset\n", attname, localname);