"Robert Shearman" <[EMAIL PROTECTED]> 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.


Reply via email to