Re: gdi32: Add a GdiConvertToDevmodeW test, make it pass under Wine
Dmitry Timoshkov wrote:
DEVMODEW *dmW; WORD dmW_size;
- 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)?
+ + 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)? -- Rob Shearman
"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.
participants (2)
-
Dmitry Timoshkov -
Robert Shearman