Fix dtdCopy bug

This commit is contained in:
James Clark 1998-05-10 10:46:34 +00:00
parent 4b8e8545c5
commit 1250e1d136

View File

@ -1894,11 +1894,10 @@ static int dtdCopy(DTD *newDtd, const DTD *oldDtd)
newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name, sizeof(ELEMENT_TYPE)); newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name, sizeof(ELEMENT_TYPE));
if (!newE) if (!newE)
return 0; return 0;
newE->defaultAtts = (DEFAULT_ATTRIBUTE *)malloc(oldE->allocDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); newE->defaultAtts = (DEFAULT_ATTRIBUTE *)malloc(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
if (!newE) if (!newE->defaultAtts)
return 0; return 0;
newE->nDefaultAtts = oldE->nDefaultAtts; newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts;
memcpy(newE, oldE, newE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE));
for (i = 0; i < newE->nDefaultAtts; i++) { for (i = 0; i < newE->nDefaultAtts; i++) {
newE->defaultAtts[i].id = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); newE->defaultAtts[i].id = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0);
newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata;