user32: DdeClientTransaction should return 0 in the last param forDDE_DATA

Dmitry Timoshkov dmitry at codeweavers.com
Wed Aug 6 00:15:17 CDT 2008


"Jeff Latimer" <lats at yless4u.com.au> wrote:

> --- a/dlls/user32/dde_client.c
> +++ b/dlls/user32/dde_client.c
> @@ -520,6 +520,7 @@ static WDML_QUEUE_STATE WDML_HandleRequestReply(WDML_CONV* pConv, MSG* msg, WDML
>     case WM_DDE_DATA:
>         UnpackDDElParam(WM_DDE_DATA, msg->lParam, &uiLo, &uiHi);
>  TRACE("Got the result (%08lx)\n", uiLo);
> + if (ack) *ack = ERROR_SUCCESS;
> 
>  hsz = WDML_MakeHszFromAtom(pConv->instance, uiHi);
> 
> diff --git a/dlls/user32/tests/dde.c b/dlls/user32/tests/dde.c
> index 8ea0525..debbd20 100644
> --- a/dlls/user32/tests/dde.c
> +++ b/dlls/user32/tests/dde.c
> @@ -292,10 +292,7 @@ static void test_ddeml_client(void)
>     hdata = DdeClientTransaction(NULL, 0, conversation, item, CF_TEXT, XTYP_REQUEST, default_timeout, &res);
>     ret = DdeGetLastError(client_pid);
>     ok(ret == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", ret);
> -    todo_wine
> -    {
> -        ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %08x\n", res);
> -    }
> +    ok(res == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %08x\n", res);

DdeClientTransaction is not supposed to return ERROR_SUCCESS in res. DDE_FNOTPROCESSED
looks like a more appropriate value. Same for DdeGetLastError, DMLERR_NO_ERROR seems
more reasonable in this case.

Also IMO a more appropriate place to set ack to DDE_FNOTPROCESSED is WDML_HandleReply,
so that all types of replies get covered.

-- 
Dmitry.



More information about the wine-devel mailing list