More bullet proofing for <rdar://problem/4038304> CrashTracer: ....9 crashes at...
authorrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Mar 2005 02:27:57 +0000 (02:27 +0000)
committerrjw <rjw@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 8 Mar 2005 02:27:57 +0000 (02:27 +0000)
Protect against removal of Times and Times New Roman from
system.  If these fonts are removed attempt to get system font
instead of FATAL_ALWAYS.

        Reviewed by John.

        * WebCoreSupport.subproj/WebTextRenderer.m:
        (-[WebTextRenderer initWithFont:usingPrinterFont:]):

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

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

index 7f673cb1ee5390ba899a4d71d9bdcef6883fa5ca..93ada3f32fea7d02f621e44496541a09e8da9cc5 100644 (file)
@@ -1,3 +1,16 @@
+2005-03-07  Richard Williamson   <rjw@apple.com>
+
+       More bullet proofing for <rdar://problem/4038304> CrashTracer: ....9 crashes at com.apple.WebKit: -[WebTextRenderer initWithFont:usingPrinterFont:] + 840
+
+       Protect against removal of Times and Times New Roman from
+       system.  If these fonts are removed attempt to get system font
+       instead of FATAL_ALWAYS.
+
+        Reviewed by John.
+
+        * WebCoreSupport.subproj/WebTextRenderer.m:
+        (-[WebTextRenderer initWithFont:usingPrinterFont:]):
+
 === Safari-403 ===
 
 2005-03-06  Darin Adler  <darin@apple.com>
index 968961ae049874724c7857b67e2f15024e70dbfa..2136cdb8c7b0278f3c99e82d181482873e35844f 100644 (file)
@@ -350,6 +350,7 @@ static BOOL alwaysUseATSU = NO;
     font = [(p ? [f printerFont] : [f screenFont]) retain];
     usingPrinterFont = p;
     
+    bool failedSetup = false;
     if (![self _setupFont]){
         // Ack!  Something very bad happened, like a corrupt font.  Try
         // looking for an alternate 'base' font for this renderer.
@@ -381,12 +382,14 @@ static BOOL alwaysUseATSU = NO;
                font = [(p ? [af printerFont] : [af screenFont]) retain];
                if (![self _setupFont]){
                    // We tried, Times, Times New Roman, and the system font.  No joy.  We have to give up.
-                   FATAL_ALWAYS ("%@ unable to initialize with font %@ at %@", self, initialFont, filePath);
+                   ERROR ("%@ unable to initialize with font %@ at %@", self, initialFont, filePath);
+                    failedSetup = true;
                }
            }
            else {
                // We tried the requested font and the syste, font.  No joy.  We have to give up.
-               FATAL_ALWAYS ("%@ unable to initialize with font %@ at %@", self, initialFont, filePath);
+               ERROR ("%@ unable to initialize with font %@ at %@", self, initialFont, filePath);
+                failedSetup = true;
            }
         }
 
@@ -397,6 +400,15 @@ static BOOL alwaysUseATSU = NO;
                     filePath);
     }
 
+    // If all else fails try to setup using the system font.  This is probably because
+    // Times and Times New Roman are both unavailable.
+    if (failedSetup) {
+        f = [NSFont systemFontOfSize:[f pointSize]];
+        ERROR ("%@ failed to setup font, using system font %s", self, f);
+        font = [(p ? [f printerFont] : [f screenFont]) retain];
+        [self _setupFont];
+    }
+    
     // We emulate the appkit metrics by applying rounding as is done
     // in the appkit.
     CGFontRef cgFont = [font _backingCGSFont];