kernel32: WideCharToMultiByte: return error on negative dest len

James Hawkins truiken at gmail.com
Mon Mar 24 11:15:06 CDT 2008


On Mon, Mar 24, 2008 at 10:54 AM, Maarten Lankhorst
<m.b.lankhorst at gmail.com> wrote:
> Hello Dan and AJ,
>
>  2008/3/24, Alexandre Julliard <julliard at winehq.org>:
>
>
> > "Dan Kegel" <dank at kegel.com> writes:
>  >
>  >  > +static void test_negative_dest_length(void)
>  >  > +{
>  >  > +    int len;
>  >  > +    char buf[10];
>  >  > +
>  >  > +    /* Test return on negative dest length */
>  >  > +    SetLastError( 0xdeadbeef );
>  >  > +    memset(buf,'x',sizeof(buf));
>  >  > +    len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, buf, -1, NULL, NULL);
>  >  > +    ok(len == 0 && GetLastError() == ERROR_INVALID_PARAMETER,
>  >  > +       "WideCharToMultiByte(destlen -1): len=%d error=%x\n", len, GetLastError());
>  >
>  >  If you want to determine the behavior for negative values you have to
>  >  test more than just -1, it may well be special.
>  The test is valid at least on xp, however it could be that wine
>  internally relies on the broken behavior, so I'm not 100% sure whether
>  it can be committed without checking for that first?
>

It's invalid because -1 may be a special case, as Alexandre stated.
That is, there may be a difference between length -1 and length -x,
where x is a positive integer > 1.

-- 
James Hawkins



More information about the wine-devel mailing list