[Webkit-unassigned] [Bug 41129] CSSSelector: Avoid chaining tagHistory of CSSSelector, which causes stack overflow.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Jul 14 12:04:41 PDT 2010


https://bugs.webkit.org/show_bug.cgi?id=41129





--- Comment #20 from Darin Adler <darin at apple.com>  2010-07-14 12:04:41 PST ---
Here’s my cut at SelectorBag.

class SelectorBag : public Noncopyable {
public:
    bool isEmpty() const;
    PassOwnPtr<CSSSelector> takeAny();
    void append(PassOwnPtr<CSSSelector>);

private:
    SelectorBag();
    ~SelectorBag();

    OwnPtr<CSSSelector> m_oneSelector;
    Vector<CSSSelector*> m_overflowSelectors;
    size_t m_overflowSelectorIndex;
};

SelectorBag::SelectorBag()

inline bool SelectorBag::isEmpty() const
{
    return !m_oneSelector && m_overflowSelectorIndex < m_overflowSelectors.size();
}

inline PassOwnPtr<CSSSelector> SelectorBag::takeAny()
{
    ASSERT(!isEmpty());
    if (m_oneSelector)
        return m_oneSelector.release();
    return adoptPtr(m_overflowSelectors[m_overflowSelectorIndex++]);
}

inline void append(PassOwnPtr<CSSSelector> selector)
{
    if (!m_oneSelector) {
        m_oneSelector = selector;
        return;
    }

    if (m_overflowSelectorIndex == m_overflowSelectors.size())

}

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the webkit-unassigned mailing list