Use a ComPtr to avoid leaking font. (#1063)

Fixes #768
This commit is contained in:
Kyle Sabo 2019-05-30 08:54:46 -07:00 committed by msftbot[bot]
parent d24d647c0d
commit 3d7160d731

View file

@ -822,7 +822,7 @@ HRESULT STDMETHODCALLTYPE CustomTextLayout::_AnalyzeFontFallback(IDWriteTextAnal
while (textLength > 0) while (textLength > 0)
{ {
UINT32 mappedLength = 0; UINT32 mappedLength = 0;
IDWriteFont* mappedFont = nullptr; ::Microsoft::WRL::ComPtr<IDWriteFont> mappedFont;
FLOAT scale = 0.0f; FLOAT scale = 0.0f;
fallback->MapCharacters(source, fallback->MapCharacters(source,
@ -837,7 +837,7 @@ HRESULT STDMETHODCALLTYPE CustomTextLayout::_AnalyzeFontFallback(IDWriteTextAnal
&mappedFont, &mappedFont,
&scale); &scale);
RETURN_IF_FAILED(_SetMappedFont(textPosition, mappedLength, mappedFont, scale)); RETURN_IF_FAILED(_SetMappedFont(textPosition, mappedLength, mappedFont.Get(), scale));
textPosition += mappedLength; textPosition += mappedLength;
textLength -= mappedLength; textLength -= mappedLength;
@ -860,7 +860,7 @@ HRESULT STDMETHODCALLTYPE CustomTextLayout::_AnalyzeFontFallback(IDWriteTextAnal
[[nodiscard]] [[nodiscard]]
HRESULT STDMETHODCALLTYPE CustomTextLayout::_SetMappedFont(UINT32 textPosition, HRESULT STDMETHODCALLTYPE CustomTextLayout::_SetMappedFont(UINT32 textPosition,
UINT32 textLength, UINT32 textLength,
IDWriteFont* const font, _In_ IDWriteFont* const font,
FLOAT const scale) FLOAT const scale)
{ {
try try