user32: More instances where early versions of usp10 are not well behaved with ScriptString_pSize being NULL.

Issue discovered by Qian Hong.
This commit is contained in:
Aric Stewart 2012-11-27 14:31:46 -06:00 committed by Alexandre Julliard
parent 423d50eb3b
commit bd7e8df6ba

View File

@ -640,7 +640,9 @@ static void EDIT_BuildLineDefs_ML(EDITSTATE *es, INT istart, INT iend, INT delta
current_line->net_length = prev; current_line->net_length = prev;
EDIT_InvalidateUniscribeData_linedef(current_line); EDIT_InvalidateUniscribeData_linedef(current_line);
EDIT_UpdateUniscribeData_linedef(es, NULL, current_line); EDIT_UpdateUniscribeData_linedef(es, NULL, current_line);
if (current_line->ssa)
sz = ScriptString_pSize(current_line->ssa); sz = ScriptString_pSize(current_line->ssa);
else sz = 0;
if (sz) if (sz)
current_line->width = sz->cx; current_line->width = sz->cx;
else else
@ -697,9 +699,14 @@ static void EDIT_BuildLineDefs_ML(EDITSTATE *es, INT istart, INT iend, INT delta
if (current_line->net_length > 0) if (current_line->net_length > 0)
{ {
EDIT_UpdateUniscribeData_linedef(es, NULL, current_line); EDIT_UpdateUniscribeData_linedef(es, NULL, current_line);
if (current_line->ssa)
{
sz = ScriptString_pSize(current_line->ssa); sz = ScriptString_pSize(current_line->ssa);
current_line->width = sz->cx; current_line->width = sz->cx;
} }
else
current_line->width = 0;
}
else current_line->width = 0; else current_line->width = 0;
} }
else if (current_line == start_line && else if (current_line == start_line &&