Module: wine Branch: master Commit: 73bec11865270731f9d896fd5f1fda2d2e2c16b7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=73bec11865270731f9d896fd5f...
Author: Aric Stewart aric@codeweavers.com Date: Tue Apr 24 13:03:22 2007 -0500
usp10: Do not crash in ScriptPlace if pABC is null.
---
dlls/usp10/usp10.c | 16 ++++++++++------ 1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index b2b4b3f..3e1258d 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -1309,8 +1309,8 @@ HRESULT WINAPI ScriptPlace(HDC hdc, SCRIPT_CACHE *psc, const WORD *pwGlyphs, * to get the correct ABC widths. */
if (!(lpABC = usp_zero_alloc(sizeof(ABC) * cGlyphs))) return E_OUTOFMEMORY; - - memset(pABC, 0, sizeof(ABC)); + if (pABC) + memset(pABC, 0, sizeof(ABC));
/* FIXME: set pGoffset to more reasonable values */ if (!GetCharABCWidthsI(get_cache_hdc(psc), 0, cGlyphs, (WORD *) pwGlyphs, lpABC )) @@ -1330,15 +1330,19 @@ HRESULT WINAPI ScriptPlace(HDC hdc, SCRIPT_CACHE *psc, const WORD *pwGlyphs, lpABC[wcnt].abcA, lpABC[wcnt].abcB, lpABC[wcnt].abcC, wcnt); - pABC->abcA += lpABC[wcnt].abcA; - pABC->abcB += lpABC[wcnt].abcB; - pABC->abcC += lpABC[wcnt].abcC; + if (pABC) + { + pABC->abcA += lpABC[wcnt].abcA; + pABC->abcB += lpABC[wcnt].abcB; + pABC->abcC += lpABC[wcnt].abcC; + } piAdvance[wcnt] = lpABC[wcnt].abcA + lpABC[wcnt].abcB + lpABC[wcnt].abcC; pGoffset[wcnt].du = 0; pGoffset[wcnt].dv = 0; } } - TRACE("Total for run: abcA=%d, abcB=%d, abcC=%d\n", pABC->abcA, pABC->abcB, pABC->abcC); + if (pABC) + TRACE("Total for run: abcA=%d, abcB=%d, abcC=%d\n", pABC->abcA, pABC->abcB, pABC->abcC);
usp_free(lpABC); return S_OK;