mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 12:55:46 +00:00
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:
parent
6115852e16
commit
341a10bb1b
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user