18 Dec
2007
18 Dec
'07
3:19 p.m.
"Robert Shearman" <rob(a)codeweavers.com> wrote:
- dmW_size = dmA->dmSize + CCHDEVICENAME; - if (dmA->dmSize >= (const char *)dmA->dmFormName - (const char *)dmA + CCHFORMNAME) + dmW_size = dmA->dmSize; + if (dmW_size > sizeof(DEVMODEA)) + dmW_size = sizeof(DEVMODEA);
Shouldn't this be sizeof(DEVMODEW)?
No, because of below reasons.
+ + dmW_size += CCHDEVICENAME;
Shouldn't this be CCDEVICENAME * sizeof(WCHAR)?
+ if (dmA->dmSize >= FIELD_OFFSET(DEVMODEA, dmFormName) + CCHFORMNAME) dmW_size += CCHFORMNAME;
Shouldn't this be CCHFORMNAME * sizeof(WCHAR)?
DEVMODEA already allocates space for 1-byte buffers, by adding the size of each buffer I effectively multiply the size of buffers in A structure by 2. -- Dmitry.