diff --git a/dlls/usp10/tests/usp10.c b/dlls/usp10/tests/usp10.c index cd129ff3940..4d8d6a7cb24 100644 --- a/dlls/usp10/tests/usp10.c +++ b/dlls/usp10/tests/usp10.c @@ -2515,6 +2515,7 @@ static void test_ScriptGetFontProperties(HDC hdc) hr = ScriptGetFontProperties(hdc,&psc,&sfp); ok( hr == E_INVALIDARG, "(hdc,&psc,&sfp) invalid, expected E_INVALIDARG, got %08x\n", hr); ok( psc != NULL, "Expected a pointer in psc, got NULL\n"); + ok( sfp.cBytes == sizeof(SCRIPT_FONTPROPERTIES) - 1, "Unexpected cBytes.\n"); ScriptFreeCache(&psc); ok( psc == NULL, "Expected psc to be NULL, got %p\n", psc); diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index 40fc89a6b6c..a1f9c15b9ed 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -741,6 +741,8 @@ BOOL usp10_array_reserve(void **elements, SIZE_T *capacity, SIZE_T count, SIZE_T /* TODO Fix font properties on Arabic locale */ static inline BOOL set_cache_font_properties(const HDC hdc, ScriptCache *sc) { + sc->sfp.cBytes = sizeof(sc->sfp); + if (!sc->sfnt) { sc->sfp.wgBlank = sc->tm.tmBreakChar; @@ -788,11 +790,7 @@ static inline BOOL set_cache_font_properties(const HDC hdc, ScriptCache *sc) static inline void get_cache_font_properties(SCRIPT_FONTPROPERTIES *sfp, ScriptCache *sc) { - sfp->wgBlank = sc->sfp.wgBlank; - sfp->wgDefault = sc->sfp.wgDefault; - sfp->wgInvalid = sc->sfp.wgInvalid; - sfp->wgKashida = sc->sfp.wgKashida; - sfp->iKashidaWidth = sc->sfp.iKashidaWidth; + *sfp = sc->sfp; } static inline LONG get_cache_height(SCRIPT_CACHE *psc)