Check whether font creation is failed to avoid segment fault.
authorcommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 7 May 2013 14:32:58 +0000 (14:32 +0000)
committercommit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>
Tue, 7 May 2013 14:32:58 +0000 (14:32 +0000)
In some rare cases, SkFontHost::CreateTypeface in src/ports/SkFontHost_fontconfig.cpp will return NULL, this will lead to segment fault because the previous code would access to 0x0 by (SkTypeface *)NULL->unref().

BUG=
R=reed@google.com, bungeman@google.com

Author: yunchao.he@intel.com

Review URL: https://chromiumcodereview.appspot.com/14907005

git-svn-id: http://skia.googlecode.com/svn/trunk@9034 2bbb7eff-a529-9590-31e7-b0007b416f81

tests/FontHostStreamTest.cpp

index 4fd88cc4da9a3ee57d6a07e62da9d665971b5975..30e469b4105b71857214e5dfc59620420b76027f 100644 (file)
@@ -72,7 +72,9 @@ static void test_fontHostStream(skiatest::Reporter* reporter) {
         paint.setColor(SK_ColorGRAY);
         paint.setTextSize(SkIntToScalar(30));
 
-        paint.setTypeface(SkTypeface::CreateFromName("Georgia", SkTypeface::kNormal))->unref();
+        SkTypeface* fTypeface = SkTypeface::CreateFromName("Georgia",
+                                                           SkTypeface::kNormal);
+        SkSafeUnref(paint.setTypeface(fTypeface));
 
         SkIRect origRect = SkIRect::MakeWH(64, 64);
         SkBitmap origBitmap;