mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[USP10]
Fix memory leaks.
Already sent & committed upstream: 783683be2d
svn path=/trunk/; revision=54612
This commit is contained in:
parent
af39483cdf
commit
65b1bedcb3
1 changed files with 18 additions and 3 deletions
|
@ -1439,7 +1439,10 @@ HRESULT WINAPI ScriptStringAnalyse(HDC hdc, const void *pString, int cString,
|
||||||
{
|
{
|
||||||
int tab_x = 0;
|
int tab_x = 0;
|
||||||
if (!(analysis->glyphs = heap_alloc_zero(sizeof(StringGlyphs) * analysis->numItems)))
|
if (!(analysis->glyphs = heap_alloc_zero(sizeof(StringGlyphs) * analysis->numItems)))
|
||||||
|
{
|
||||||
|
heap_free(BidiLevel);
|
||||||
goto error;
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
for (i = 0; i < analysis->numItems; i++)
|
for (i = 0; i < analysis->numItems; i++)
|
||||||
{
|
{
|
||||||
|
@ -2422,8 +2425,16 @@ HRESULT WINAPI ScriptShapeOpenType( HDC hdc, SCRIPT_CACHE *psc,
|
||||||
if (!(pwOutGlyphs[i] = get_cache_glyph(psc, chInput)))
|
if (!(pwOutGlyphs[i] = get_cache_glyph(psc, chInput)))
|
||||||
{
|
{
|
||||||
WORD glyph;
|
WORD glyph;
|
||||||
if (!hdc) return E_PENDING;
|
if (!hdc)
|
||||||
if (GetGlyphIndicesW(hdc, &chInput, 1, &glyph, 0) == GDI_ERROR) return S_FALSE;
|
{
|
||||||
|
heap_free(rChars);
|
||||||
|
return E_PENDING;
|
||||||
|
}
|
||||||
|
if (GetGlyphIndicesW(hdc, &chInput, 1, &glyph, 0) == GDI_ERROR)
|
||||||
|
{
|
||||||
|
heap_free(rChars);
|
||||||
|
return S_FALSE;
|
||||||
|
}
|
||||||
pwOutGlyphs[i] = set_cache_glyph(psc, chInput, glyph);
|
pwOutGlyphs[i] = set_cache_glyph(psc, chInput, glyph);
|
||||||
}
|
}
|
||||||
rChars[i] = chInput;
|
rChars[i] = chInput;
|
||||||
|
@ -2487,7 +2498,11 @@ HRESULT WINAPI ScriptShape(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcChars,
|
||||||
charProps = heap_alloc_zero(sizeof(SCRIPT_CHARPROP)*cChars);
|
charProps = heap_alloc_zero(sizeof(SCRIPT_CHARPROP)*cChars);
|
||||||
if (!charProps) return E_OUTOFMEMORY;
|
if (!charProps) return E_OUTOFMEMORY;
|
||||||
glyphProps = heap_alloc_zero(sizeof(SCRIPT_GLYPHPROP)*cMaxGlyphs);
|
glyphProps = heap_alloc_zero(sizeof(SCRIPT_GLYPHPROP)*cMaxGlyphs);
|
||||||
if (!glyphProps) return E_OUTOFMEMORY;
|
if (!glyphProps)
|
||||||
|
{
|
||||||
|
heap_free(charProps);
|
||||||
|
return E_OUTOFMEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
hr = ScriptShapeOpenType(hdc, psc, psa, scriptInformation[psa->eScript].scriptTag, 0, NULL, NULL, 0, pwcChars, cChars, cMaxGlyphs, pwLogClust, charProps, pwOutGlyphs, glyphProps, pcGlyphs);
|
hr = ScriptShapeOpenType(hdc, psc, psa, scriptInformation[psa->eScript].scriptTag, 0, NULL, NULL, 0, pwcChars, cChars, cMaxGlyphs, pwLogClust, charProps, pwOutGlyphs, glyphProps, pcGlyphs);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue