| Index: Source/core/svg/SVGFontData.cpp
|
| diff --git a/Source/core/svg/SVGFontData.cpp b/Source/core/svg/SVGFontData.cpp
|
| index a62697455da50d047415d5422b9f577545ca2094..53e6e3a8966ff5ed35b2aa3eb23466485f93d073 100644
|
| --- a/Source/core/svg/SVGFontData.cpp
|
| +++ b/Source/core/svg/SVGFontData.cpp
|
| @@ -46,7 +46,7 @@ namespace WebCore {
|
|
|
| SVGFontData::SVGFontData(SVGFontFaceElement* fontFaceElement)
|
| : CustomFontData()
|
| - , m_svgFontFaceElement(fontFaceElement)
|
| + , m_svgFontFaceElement(fontFaceElement->createWeakRef())
|
| , m_horizontalOriginX(fontFaceElement->horizontalOriginX())
|
| , m_horizontalOriginY(fontFaceElement->horizontalOriginY())
|
| , m_horizontalAdvanceX(fontFaceElement->horizontalAdvanceX())
|
| @@ -57,12 +57,16 @@ SVGFontData::SVGFontData(SVGFontFaceElement* fontFaceElement)
|
| ASSERT_ARG(fontFaceElement, fontFaceElement);
|
| }
|
|
|
| +SVGFontData::~SVGFontData()
|
| +{
|
| +}
|
| +
|
| void SVGFontData::initializeFontData(SimpleFontData* fontData, float fontSize)
|
| {
|
| ASSERT(fontData);
|
|
|
| SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
|
| - ASSERT(svgFontFaceElement && svgFontFaceElement->inDocument());
|
| + RELEASE_ASSERT(svgFontFaceElement && svgFontFaceElement->inDocument()); // FIXME: SVGFontData should be only used from the document with the SVGFontFaceElement.
|
|
|
| SVGFontElement* svgFontElement = svgFontFaceElement->associatedFontElement();
|
| ASSERT(svgFontElement);
|
| @@ -122,7 +126,12 @@ void SVGFontData::initializeFontData(SimpleFontData* fontData, float fontSize)
|
| float SVGFontData::widthForSVGGlyph(Glyph glyph, float fontSize) const
|
| {
|
| SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
|
| +
|
| + // FIXME: SVGFontData should be only used from the document with the SVGFontFaceElement.
|
| ASSERT(svgFontFaceElement);
|
| + if (!svgFontFaceElement)
|
| + return 0.0f;
|
| +
|
| // RenderView::clearSelection is invoked while removing some element, e.g.
|
| // Document::nodeWillBeRemoved => FrameSelection::nodeWillBeRemoved => RenderView::clearSelection.
|
| // Since recalc style has not been executed yet, RenderStyle might have some reference to
|
| @@ -162,7 +171,7 @@ bool SVGFontData::applySVGGlyphSelection(WidthIterator& iterator, GlyphData& gly
|
| arabicForms = charactersWithArabicForm(remainingTextInRun, mirror);
|
|
|
| SVGFontFaceElement* svgFontFaceElement = this->svgFontFaceElement();
|
| - ASSERT(svgFontFaceElement && svgFontFaceElement->inDocument());
|
| + RELEASE_ASSERT(svgFontFaceElement && svgFontFaceElement->inDocument()); // FIXME: SVGFontData should be only used from the document with the SVGFontFaceElement.
|
|
|
| SVGFontElement* associatedFontElement = svgFontFaceElement->associatedFontElement();
|
| ASSERT(associatedFontElement);
|
| @@ -233,7 +242,7 @@ bool SVGFontData::fillSVGGlyphPage(GlyphPage* pageToFill, unsigned offset, unsig
|
| ASSERT(fontData->isSVGFont());
|
|
|
| SVGFontFaceElement* fontFaceElement = this->svgFontFaceElement();
|
| - ASSERT(fontFaceElement && fontFaceElement->inDocument());
|
| + RELEASE_ASSERT(fontFaceElement && fontFaceElement->inDocument()); // FIXME: SVGFontData should be only used from the document with the SVGFontFaceElement.
|
|
|
| SVGFontElement* fontElement = fontFaceElement->associatedFontElement();
|
| ASSERT(fontElement);
|
|
|