summaryrefslogtreecommitdiffstats
path: root/WebCore/html/HTMLLinkElement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/html/HTMLLinkElement.cpp')
-rw-r--r--WebCore/html/HTMLLinkElement.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/WebCore/html/HTMLLinkElement.cpp b/WebCore/html/HTMLLinkElement.cpp
index bc7b99d..bdb33fb 100644
--- a/WebCore/html/HTMLLinkElement.cpp
+++ b/WebCore/html/HTMLLinkElement.cpp
@@ -62,6 +62,9 @@ PassRefPtr<HTMLLinkElement> HTMLLinkElement::create(const QualifiedName& tagName
HTMLLinkElement::~HTMLLinkElement()
{
+ if (m_sheet)
+ m_sheet->clearOwnerNode();
+
if (m_cachedSheet) {
m_cachedSheet->removeClient(this);
if (m_loading && !isDisabled() && !isAlternate())
@@ -189,8 +192,10 @@ void HTMLLinkElement::tokenizeRelAttribute(const AtomicString& rel, RelAttribute
void HTMLLinkElement::process()
{
- if (!inDocument())
+ if (!inDocument()) {
+ ASSERT(!m_sheet);
return;
+ }
String type = m_type.lower();
@@ -279,6 +284,12 @@ void HTMLLinkElement::removedFromDocument()
document()->removeStyleSheetCandidateNode(this);
+ if (m_sheet) {
+ ASSERT(m_sheet->ownerNode() == this);
+ m_sheet->clearOwnerNode();
+ m_sheet = 0;
+ }
+
if (document()->renderer())
document()->styleSelectorChanged(DeferRecalcStyle);
}
@@ -291,6 +302,11 @@ void HTMLLinkElement::finishParsingChildren()
void HTMLLinkElement::setCSSStyleSheet(const String& href, const KURL& baseURL, const String& charset, const CachedCSSStyleSheet* sheet)
{
+ if (!inDocument()) {
+ ASSERT(!m_sheet);
+ return;
+ }
+
m_sheet = CSSStyleSheet::create(this, href, baseURL, charset);
bool strictParsing = !document()->inQuirksMode();