ArrayData *SharedMap::lvalNew(Variant *&ret, bool copy) { ArrayData *escalated = escalate(); ArrayData *ee = escalated->lvalNew(ret, false); if (ee) { escalated->release(); return ee; } return escalated; }
Variant &Array::lvalAt() { if (!m_px) ArrayBase::operator=(ArrayData::Create()); Variant *ret = nullptr; ArrayData *arr = m_px; ArrayData *escalated = arr->lvalNew(ret, arr->getCount() > 1); if (escalated != arr) ArrayBase::operator=(escalated); assert(ret); return *ret; }
Variant &Array::lvalAt() { if (!m_px) { SmartPtr<ArrayData>::operator=(ArrayData::Create()); } Variant *ret = NULL; ArrayData *arr = m_px; ArrayData *escalated = arr->lvalNew(ret, arr->getCount() > 1); if (escalated) { SmartPtr<ArrayData>::operator=(escalated); } ASSERT(ret); return *ret; }
ArrayData *SharedMap::lvalNew(Variant *&ret, bool copy) { ArrayData *escalated = SharedMap::escalate(); return releaseIfCopied(escalated, escalated->lvalNew(ret, false)); }
ArrayData *APCLocalArray::LvalNew(ArrayData* ad, Variant *&ret, bool copy) { ArrayData *escalated = Escalate(ad); return releaseIfCopied(escalated, escalated->lvalNew(ret, false)); }