From 9c5d659d5fdfb149f786335f39b20e55c71d949b Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Mon, 26 May 2014 08:24:36 -0700 Subject: [PATCH] Fix for bug 15252902 native crash in Minikin This is a fix for bug 15252902 "Crash observed on keep launch or existing youtube app after playing video". It was doing the test for a null font after trying to resolve the font in a cache, which caused a crash when there was no font for the run. This patch just tests before cache lookup. Change-Id: Iee41f7ce6b69cb09438462b6aaa916f242da7b77 --- engine/src/flutter/libs/minikin/Layout.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/engine/src/flutter/libs/minikin/Layout.cpp b/engine/src/flutter/libs/minikin/Layout.cpp index 886b7d1f1c4..3935eb761c5 100644 --- a/engine/src/flutter/libs/minikin/Layout.cpp +++ b/engine/src/flutter/libs/minikin/Layout.cpp @@ -615,13 +615,13 @@ void Layout::doLayoutRun(const uint16_t* buf, size_t start, size_t count, size_t float y = 0; for (size_t run_ix = 0; run_ix < items.size(); run_ix++) { FontCollection::Run &run = items[run_ix]; + if (run.font == NULL) { + ALOGE("no font for run starting u+%04x length %d", buf[run.start], run.end - run.start); + continue; + } int font_ix = findFace(run.font, ctx); ctx->paint.font = mFaces[font_ix]; hb_font_t* hbFont = ctx->hbFonts[font_ix]; - if (ctx->paint.font == NULL) { - // TODO: should log what went wrong - continue; - } #ifdef VERBOSE std::cout << "Run " << run_ix << ", font " << font_ix << " [" << run.start << ":" << run.end << "]" << std::endl;