Bug 1412545 - AddRef user data before passing to cairo_font_face_set_user_data. r=jrmuizel

MozReview-Commit-ID: FcPTjCWh9wu
This commit is contained in:
Lee Salzman 2017-10-30 22:31:11 -04:00
parent 6115852e16
commit 341a10bb1b
2 changed files with 4 additions and 2 deletions

View File

@ -418,16 +418,17 @@ ScaledFontFontconfig::CreateFromInstanceData(const InstanceData& aInstanceData,
// Bug 1362117 - Cairo may keep the font face alive after the owning NativeFontResource
// was freed. To prevent this, we must bind the NativeFontResource to the font face so that
// it stays alive at least as long as the font face.
aNativeFontResource->AddRef();
if (cairo_font_face_set_user_data(font,
&sNativeFontResourceKey,
aNativeFontResource,
ReleaseNativeFontResource) != CAIRO_STATUS_SUCCESS) {
gfxWarning() << "Failed binding NativeFontResource to Cairo font face";
aNativeFontResource->Release();
cairo_font_face_destroy(font);
FcPatternDestroy(pattern);
return nullptr;
}
aNativeFontResource->AddRef();
}
cairo_matrix_t sizeMatrix;

View File

@ -690,15 +690,16 @@ gfxFontconfigFontEntry::CreateScaledFont(FcPattern* aRenderPattern,
// so that it gets deleted whenever cairo decides
NS_ASSERTION(mFTFace, "FT_Face is null when setting user data");
NS_ASSERTION(mUserFontData, "user font data is null when setting user data");
mUserFontData.get()->AddRef();
if (cairo_font_face_set_user_data(face,
&sFcFontlistUserFontDataKey,
mUserFontData,
ReleaseFTUserFontData) != CAIRO_STATUS_SUCCESS) {
NS_WARNING("Failed binding FTUserFontData to Cairo font face");
mUserFontData.get()->Release();
cairo_font_face_destroy(face);
return nullptr;
}
mUserFontData.get()->AddRef();
}
cairo_scaled_font_t *scaledFont = nullptr;