void DOMSVGAnimatedLengthList::InternalBaseValListWillChangeTo(const SVGLengthList& aNewValue) { // When the number of items in our internal counterpart's baseVal changes, // we MUST keep our baseVal in sync. If we don't, script will either see a // list that is too short and be unable to access indexes that should be // valid, or else, MUCH WORSE, script will see a list that is too long and be // able to access "items" at indexes that are out of bounds (read/write to // bad memory)!! nsRefPtr<DOMSVGAnimatedLengthList> kungFuDeathGrip; if (mBaseVal) { if (aNewValue.Length() < mBaseVal->Length()) { // InternalListLengthWillChange might clear last reference to |this|. // Retain a temporary reference to keep from dying before returning. kungFuDeathGrip = this; } mBaseVal->InternalListLengthWillChange(aNewValue.Length()); } // If our attribute is not animating, then our animVal mirrors our baseVal // and we must sync its length too. (If our attribute is animating, then the // SMIL engine takes care of calling InternalAnimValListWillChangeTo() if // necessary.) if (!IsAnimating()) { InternalAnimValListWillChangeTo(aNewValue); } }
void DOMSVGAnimatedLengthList::InternalAnimValListWillChangeTo(const SVGLengthList& aNewValue) { if (mAnimVal) { mAnimVal->InternalListLengthWillChange(aNewValue.Length()); } }
nsresult SVGLengthList::CopyFrom(const SVGLengthList& rhs) { if (!mLengths.SetCapacity(rhs.Length())) { // Yes, we do want fallible alloc here return NS_ERROR_OUT_OF_MEMORY; } mLengths = rhs.mLengths; return NS_OK; }
bool SVGLengthList::operator==(const SVGLengthList& rhs) const { if (Length() != rhs.Length()) { return false; } for (uint32_t i = 0; i < Length(); ++i) { if (!(mLengths[i] == rhs.mLengths[i])) { return false; } } return true; }
PRBool SVGLengthList::operator==(const SVGLengthList& rhs) const { if (Length() != rhs.Length()) { return PR_FALSE; } for (PRUint32 i = 0; i < Length(); ++i) { if (!(mLengths[i] == rhs.mLengths[i])) { return PR_FALSE; } } return PR_TRUE; }
void DOMSVGAnimatedLengthList::InternalBaseValListWillChangeTo(const SVGLengthList& aNewValue) { // When the number of items in our internal counterpart's baseVal changes, // we MUST keep our baseVal in sync. If we don't, script will either see a // list that is too short and be unable to access indexes that should be // valid, or else, MUCH WORSE, script will see a list that is too long and be // able to access "items" at indexes that are out of bounds (read/write to // bad memory)!! if (mBaseVal) { mBaseVal->InternalListLengthWillChange(aNewValue.Length()); } // If our attribute is not animating, then our animVal mirrors our baseVal // and we must sync its length too. (If our attribute is animating, then the // SMIL engine takes care of calling InternalAnimValListWillChangeTo() if // necessary.) if (!IsAnimating()) { InternalAnimValListWillChangeTo(aNewValue); } }