Dmitry Timoshkov : user32: Fix the logic deciding when to write to the destination structure.
Alexandre Julliard
julliard at winehq.org
Mon Oct 10 10:25:37 CDT 2011
Module: wine
Branch: master
Commit: 197f867feff0bddaca0c2d2470fbaa04acd6e3b7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=197f867feff0bddaca0c2d2470fbaa04acd6e3b7
Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date: Mon Oct 10 12:05:14 2011 +0900
user32: Fix the logic deciding when to write to the destination structure.
---
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;
+ }
}
More information about the wine-cvs
mailing list