mirror of
https://github.com/reactos/reactos.git
synced 2025-04-26 16:40:27 +00:00
If ETO_PDY is specified, Dx is a pair of INTs, make sure we access the correct index.
based on aspotashev's patch. Should fix bug #3958 See issue #3958 for more details. svn path=/trunk/; revision=38262
This commit is contained in:
parent
766c25b7e3
commit
a4e64ebf0e
1 changed files with 5 additions and 2 deletions
|
@ -3132,6 +3132,7 @@ GreExtTextOutW(
|
||||||
POINT Start;
|
POINT Start;
|
||||||
BOOL DoBreak = FALSE;
|
BOOL DoBreak = FALSE;
|
||||||
HPALETTE hDestPalette;
|
HPALETTE hDestPalette;
|
||||||
|
USHORT DxShift;
|
||||||
|
|
||||||
// TODO: Write test-cases to exactly match real Windows in different
|
// TODO: Write test-cases to exactly match real Windows in different
|
||||||
// bad parameters (e.g. does Windows check the DC or the RECT first?).
|
// bad parameters (e.g. does Windows check the DC or the RECT first?).
|
||||||
|
@ -3158,6 +3159,8 @@ GreExtTextOutW(
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DxShift = fuOptions & ETO_PDY ? 1 : 0;
|
||||||
|
|
||||||
if (PATH_IsPathOpen(dc->DcLevel))
|
if (PATH_IsPathOpen(dc->DcLevel))
|
||||||
{
|
{
|
||||||
if (!PATH_ExtTextOut( dc,
|
if (!PATH_ExtTextOut( dc,
|
||||||
|
@ -3364,7 +3367,7 @@ GreExtTextOutW(
|
||||||
if (NULL != Dx)
|
if (NULL != Dx)
|
||||||
{
|
{
|
||||||
Start = Count < 2 ? 0 : Count - 2;
|
Start = Count < 2 ? 0 : Count - 2;
|
||||||
TextWidth = Count < 2 ? 0 : (Dx[Count - 2] << 6);
|
TextWidth = Count < 2 ? 0 : (Dx[(Count-2)<<DxShift] << 6);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -3597,7 +3600,7 @@ GreExtTextOutW(
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TextLeft += Dx[i] << 6;
|
TextLeft += Dx[i<<DxShift] << 6;
|
||||||
// DbgPrint("new TextLeft2: %d\n", TextLeft);
|
// DbgPrint("new TextLeft2: %d\n", TextLeft);
|
||||||
}
|
}
|
||||||
previous = glyph_index;
|
previous = glyph_index;
|
||||||
|
|
Loading…
Reference in a new issue