コード例 #1
0
void MutableArrayIter::escalateCheck() {
    ArrayData* data;
    if (m_var) {
        data = getData();
        if (!data) return;
        ArrayData* esc = data->escalate(true);
        if (data != esc) {
            *const_cast<Variant*>(m_var) = esc;
        }
    } else {
        assert(m_data);
        data = m_data;
        ArrayData* esc = data->escalate(true);
        if (data != esc) {
            esc->incRefCount();
            decRefArr(data);
            m_data = esc;
        }
    }
}