user32: Fix the logic deciding when to write to the destination structure.
Dmitry Timoshkov
dmitry at baikal.ru
Sun Oct 9 22:05:14 CDT 2011
This patch should fix the regression reported in the bug 28630.
---
dlls/user32/sysparams.c | 22 ++++++++++++++--------
1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/dlls/user32/sysparams.c b/dlls/user32/sysparams.c
index 15838ed..afa15a2 100644
--- a/dlls/user32/sysparams.c
+++ b/dlls/user32/sysparams.c
@@ -463,10 +463,13 @@ static void SYSPARAMS_NonClientMetrics32WTo32A( const NONCLIENTMETRICSW* lpnm32W
SYSPARAMS_LogFont32WTo32A( &lpnm32W->lfMenuFont, &lpnm32A->lfMenuFont );
SYSPARAMS_LogFont32WTo32A( &lpnm32W->lfStatusFont, &lpnm32A->lfStatusFont );
SYSPARAMS_LogFont32WTo32A( &lpnm32W->lfMessageFont, &lpnm32A->lfMessageFont );
- if (lpnm32A->cbSize == sizeof(NONCLIENTMETRICSA) && lpnm32W->cbSize == sizeof(NONCLIENTMETRICSW))
- lpnm32A->iPaddedBorderWidth = lpnm32W->iPaddedBorderWidth;
- else
- lpnm32A->iPaddedBorderWidth = 0;
+ if (lpnm32A->cbSize > FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth))
+ {
+ if (lpnm32W->cbSize > FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth))
+ lpnm32A->iPaddedBorderWidth = lpnm32W->iPaddedBorderWidth;
+ else
+ lpnm32A->iPaddedBorderWidth = 0;
+ }
}
static void SYSPARAMS_NonClientMetrics32ATo32W( const NONCLIENTMETRICSA* lpnm32A, LPNONCLIENTMETRICSW lpnm32W )
@@ -485,10 +488,13 @@ static void SYSPARAMS_NonClientMetrics32ATo32W( const NONCLIENTMETRICSA* lpnm32A
SYSPARAMS_LogFont32ATo32W( &lpnm32A->lfMenuFont, &lpnm32W->lfMenuFont );
SYSPARAMS_LogFont32ATo32W( &lpnm32A->lfStatusFont, &lpnm32W->lfStatusFont );
SYSPARAMS_LogFont32ATo32W( &lpnm32A->lfMessageFont, &lpnm32W->lfMessageFont );
- if (lpnm32A->cbSize == sizeof(NONCLIENTMETRICSA) && lpnm32W->cbSize == sizeof(NONCLIENTMETRICSW))
- lpnm32W->iPaddedBorderWidth = lpnm32A->iPaddedBorderWidth;
- else
- lpnm32W->iPaddedBorderWidth = 0;
+ if (lpnm32W->cbSize > FIELD_OFFSET(NONCLIENTMETRICSW, iPaddedBorderWidth))
+ {
+ if (lpnm32A->cbSize > FIELD_OFFSET(NONCLIENTMETRICSA, iPaddedBorderWidth))
+ lpnm32W->iPaddedBorderWidth = lpnm32A->iPaddedBorderWidth;
+ else
+ lpnm32W->iPaddedBorderWidth = 0;
+ }
}
--
1.7.5.1
More information about the wine-patches
mailing list