Index: Source/core/dom/Text.cpp |
diff --git a/Source/core/dom/Text.cpp b/Source/core/dom/Text.cpp |
index 9ace889c425cee2227e1365d5dcf7b5f3cc521f0..f5d58a3e4b49fcff564169ab0c902e1646887608 100644 |
--- a/Source/core/dom/Text.cpp |
+++ b/Source/core/dom/Text.cpp |
@@ -280,15 +280,20 @@ void Text::recalcTextStyle(StyleChange change) |
{ |
RenderText* renderer = toRenderText(this->renderer()); |
- if (change != NoChange && renderer) |
- renderer->setStyle(document()->styleResolver()->styleForText(this)); |
+ if (!renderer) { |
+ if (needsStyleRecalc()) |
+ reattach(); |
+ clearNeedsStyleRecalc(); |
+ return; |
+ } |
if (needsStyleRecalc()) { |
- if (renderer) |
- renderer->setText(dataImpl()); |
- else |
- reattach(); |
+ renderer->setStyle(document()->styleResolver()->styleForText(this)); |
+ renderer->setText(dataImpl()); |
+ } else if (change != NoChange) { |
+ renderer->setStyle(document()->styleResolver()->styleForText(this)); |
} |
+ |
clearNeedsStyleRecalc(); |
} |