summaryrefslogtreecommitdiffstats
path: root/WebCore/loader/CachedResourceHandle.h
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/loader/CachedResourceHandle.h')
-rw-r--r--WebCore/loader/CachedResourceHandle.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/WebCore/loader/CachedResourceHandle.h b/WebCore/loader/CachedResourceHandle.h
index 9d45b94..0956e0c 100644
--- a/WebCore/loader/CachedResourceHandle.h
+++ b/WebCore/loader/CachedResourceHandle.h
@@ -60,7 +60,7 @@ namespace WebCore {
template <class R> class CachedResourceHandle : public CachedResourceHandleBase {
public:
CachedResourceHandle() { }
- CachedResourceHandle(R* res) : CachedResourceHandleBase(res) { }
+ CachedResourceHandle(R* res);
CachedResourceHandle(const CachedResourceHandle<R>& o) : CachedResourceHandleBase(o) { }
R* get() const { return reinterpret_cast<R*>(CachedResourceHandleBase::get()); }
@@ -71,6 +71,17 @@ namespace WebCore {
bool operator==(const CachedResourceHandleBase& o) const { return get() == o.get(); }
bool operator!=(const CachedResourceHandleBase& o) const { return get() != o.get(); }
};
+
+ // Don't inline for winscw compiler to prevent the compiler agressively resolving
+ // the base class of R* when CachedResourceHandler<T>(R*) is inlined. The bug is
+ // reported at: https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812.
+ template <class R>
+#if !COMPILER(WINSCW)
+ inline
+#endif
+ CachedResourceHandle<R>::CachedResourceHandle(R* res) : CachedResourceHandleBase(res)
+ {
+ }
template <class R, class RR> bool operator==(const CachedResourceHandle<R>& h, const RR* res)
{