Fixed <rdar://problem/3998368> Tiger8A376: WebTextRenderer assertion failure in...
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Feb 2005 00:31:12 +0000 (00:31 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Feb 2005 00:31:12 +0000 (00:31 +0000)
Removed use of FATAL_ALWAYS from getUncachedWidth().  It's unclear
why we would trigger the FATAL_ALWAYS.  In the past we've seen
the message triggered because of corrupt fonts.  Anyway, in this
particular case, we will now return 0 for the character width,
rather than exiting.

        Reviewed by David Harrison.

        * WebCoreSupport.subproj/WebTextRenderer.m:
        (getUncachedWidth):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8598 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/ChangeLog
WebKit/WebCoreSupport.subproj/WebTextRenderer.m

index 393bf78ddd6b3e50949f156ce2307074cdaf3e27..37e9a1570542805e6f3eb703a49a02806c0a1b93 100644 (file)
@@ -1,3 +1,18 @@
+2005-02-15  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3998368> Tiger8A376: WebTextRenderer assertion failure in Safari while browsing news.bbc.co.uk
+
+       Removed use of FATAL_ALWAYS from getUncachedWidth().  It's unclear
+       why we would trigger the FATAL_ALWAYS.  In the past we've seen
+       the message triggered because of corrupt fonts.  Anyway, in this
+       particular case, we will now return 0 for the character width,
+       rather than exiting.
+
+        Reviewed by David Harrison.
+
+        * WebCoreSupport.subproj/WebTextRenderer.m:
+        (getUncachedWidth):
+
 2005-02-15  Richard Williamson   <rjw@apple.com>
 
        Fixed <rdar://problem/3999467> when Osaka-Mono is specified as fixed width font, Osaka used instead
index 3746632d2c8131c11876d20d551227c7ed1ff814..85a7cb07b1b1007fc35234bfc1866b0005f9e451 100644 (file)
@@ -214,8 +214,10 @@ static WebGlyphWidth getUncachedWidth(WebTextRenderer *renderer, WidthMap *map,
     if (font == NULL)
         font = renderer->font;
 
-    if (!CGFontGetGlyphScaledAdvances ([font _backingCGSFont], &glyph, 1, &width, [font pointSize]))
-        FATAL_ALWAYS ("Unable to cache glyph widths for %@ %f",  [font displayName], [font pointSize]);
+    if (!CGFontGetGlyphScaledAdvances ([font _backingCGSFont], &glyph, 1, &width, [font pointSize])) {
+        ERROR ("Unable to cache glyph widths for %@ %f",  [font displayName], [font pointSize]);
+       return 0.;
+    }
 
     return width;
 }
@@ -241,8 +243,10 @@ static WebGlyphWidth getUncachedWidth(WebTextRenderer *renderer, WidthMap *map,
 
     pointSize = [font pointSize];
     m = CGAffineTransformMakeScale(pointSize, pointSize);
-    if (!CGFontGetGlyphTransformedAdvances([font _backingCGSFont], &m, _AppkitGetCGRenderingMode(font), &glyph, 1, &advance))
-        FATAL_ALWAYS ("Unable to cache glyph widths for %@ %f", [font displayName], pointSize);
+    if (!CGFontGetGlyphTransformedAdvances([font _backingCGSFont], &m, _AppkitGetCGRenderingMode(font), &glyph, 1, &advance)) {
+        ERROR ("Unable to cache glyph widths for %@ %f", [font displayName], pointSize);
+       return 0.;
+    }
 
     return advance.width;
 }