"Jeff Latimer" <lats(a)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.