[Webkit-unassigned] [Bug 29187] Don't inline ~ListRefPtr() to workaround winscw compiler forward declaration limitation.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Sep 16 11:58:19 PDT 2009


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





--- Comment #9 from Yongjun Zhang <yongjun.zhang at nokia.com>  2009-09-16 11:58:18 PDT ---
(In reply to comment #6)
Thanks a lot, Eric.

> Also, this needs a comment in the code and a link to the winscw bug.

I will modify the patch as suggested.

> What is being forward declared here that winscw can't understand?

Class FontFamily (in WebCore/platform/graphics) has member "   
ListRefPtr<SharedFontFamily> m_next".  SharedFontFamily is forward declared but
winscw compiler complains it is not enough to resolve SharedFontFamily::ref(),
when ~ListRefPtr is inlined in the implicit default dtor of FontFamily (which
is inlined too).

To summerize how this happens:

1. ~FontFamily() is inlined, the compiler tries to resolve ~ListRefPtr() from
inside.
2. ~ListRefPtr() has line "RefPtr<T> reaper = this->release();", 
which calls the ctr RefPtr<T>::RefPtr(T*), where ref() is called.  Winscw
compiler tries to resolve T::ref() when ~ListRefPtr() is inlined, and it fails
if class T is not defined before that.

-- 
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