nsHTMLValue value; if (NS_CONTENT_ATTR_HAS_VALUE == GetHTMLAttribute(nsHTMLAtoms::cols, value) && eHTMLUnit_String == value.GetUnit()) { nsAutoString cols; value.GetStringValue(cols); nsresult rv = ParseRowCol(cols, mNumCols, &mColSpecs);
const nsAttrValue* value = GetParsedAttr(nsHTMLAtoms::cols); if (value && value->Type() == nsAttrValue::eString) { nsresult rv = ParseRowCol(value->GetStringValue(), mNumCols, &mColSpecs);
nsHTMLFrameSetElement::GetColSpec(PRInt32 *aNumValues,                                  const nsFramesetSpec** aSpecs){  NS_PRECONDITION(aNumValues, "Must have a pointer to an integer here!");  NS_PRECONDITION(aSpecs, "Must have a pointer to an array of nsFramesetSpecs");  *aNumValues = 0;  *aSpecs = nsnull;  if (!mColSpecs) {    nsHTMLValue value;    if (NS_CONTENT_ATTR_HAS_VALUE == GetHTMLAttribute(nsHTMLAtoms::cols, value) &&        eHTMLUnit_String == value.GetUnit()) {      nsAutoString cols;      value.GetStringValue(cols);      nsresult rv = ParseRowCol(cols, mNumCols, &mColSpecs);      NS_ENSURE_SUCCESS(rv, rv);    }    if (!mColSpecs) {  // we may not have had an attr or had an empty attr      mColSpecs = new nsFramesetSpec[1];      if (!mColSpecs) {        mNumCols = 0;        return NS_ERROR_OUT_OF_MEMORY;      }      mNumCols = 1;      mColSpecs[0].mUnit  = eFramesetUnit_Relative;      mColSpecs[0].mValue = 1;    }  }  *aSpecs = mColSpecs;  *aNumValues = mNumCols;  return NS_OK;}