Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78b868ff authored by Fabrice Di Meglio's avatar Fabrice Di Meglio
Browse files

Fix bug #4441002 Crash in SkPathEffectGlue::OneD_constructor

- take care of empty strings in TextLayoutCache when computing advances/glyphs with Harfbuzz

Change-Id: I8eb5f632feb7a86e5c4a6db03d073c4b7d859dbc
parent 4383243d
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -547,6 +547,25 @@ void TextLayoutCacheValue::computeRunValuesWithHarfbuzz(SkPaint* paint, const UC
    LOGD("         -- isDevKernText=%d", paint->isDevKernText());
#endif

    if (shaperItem.advances == NULL || shaperItem.num_glyphs == 0) {
#if DEBUG_GLYPHS
    LOGD("HARFBUZZ -- advances array is empty or num_glypth = 0");
#endif
        for (size_t i = 0; i < count; i++) {
            outAdvances[i] = 0;
        }
        *outTotalAdvance = 0;

        if (outGlyphs) {
            *outGlyphsCount = 0;
            *outGlyphs = new jchar[0];
        }

        // Cleaning
        deleteGlyphArrays(&shaperItem);
        HB_FreeFace(shaperItem.face);
        return;
    }
    // Get Advances and their total
    jfloat totalAdvance = outAdvances[0] = HBFixedToFloat(shaperItem.advances[shaperItem.log_clusters[0]]);
    for (size_t i = 1; i < count; i++) {