codeweavers' DDE patch

Eric Pouech pouech-eric at wanadoo.fr
Sat May 24 06:05:32 CDT 2003


Hi Dmitry,

regarding the DDE related patch that Alexandre committed a couple of 
days ago from codeweavers' tree 
(http://cvs.winehq.com/patch.py?root=/home/winehq/opt/cvs-commit&id=8293), 
I have a couple of questions:

1/
diff -u wine/dlls/user/dde/server.c:1.11 wine/dlls/user/dde/server.c:1.12
--- wine/dlls/user/dde/server.c:1.11	Sat May 24 10:42:52 2003
+++ wine/dlls/user/dde/server.c	Sat May 24 10:42:52 2003
@@ -101,7 +101,7 @@
  	if (DdeCmpStringHandles(hszItem, pLink->hszItem) == 0)
  	{
  	    hDdeData = WDML_InvokeCallback(pInstance, XTYP_ADVREQ, 
pLink->uFmt, pLink->hConv,
-					   hszTopic, hszItem, 0, count--, 0);
+					   hszTopic, hszItem, 0, 0, 0);

  	    if (hDdeData == (HDDEDATA)CBR_BLOCK)
  	    {
why did you remove the count-- reference as dwData1 ?
MSDN states:
(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/dataexchange/dynamicdataexchangemanagementlibrary/dynamicdataexchangemanagementreference/dynamicdataexchangemanagementtransactions/xtyp_advreq.asp)
Specifies the count, in the low-order word, of XTYP_ADVREQ transactions 
that remain to be processed on the same topic, item, and format name set 
within the context of the current call to the DdePostAdvise function. 
The count is zero if the current XTYP_ADVREQ transaction is the last 
one. A server can use this count to determine whether to create an 
HDATA_APPOWNED data handle for the advise data.

2/
Index: wine/dlls/user/dde/server.c
diff -u wine/dlls/user/dde/server.c:1.11 wine/dlls/user/dde/server.c:1.12
--- wine/dlls/user/dde/server.c:1.11	Sat May 24 10:42:52 2003
+++ wine/dlls/user/dde/server.c	Sat May 24 10:42:52 2003
@@ -570,7 +581,7 @@
  	break;
      default:
          {
-	    HGLOBAL	hMem = WDML_DataHandle2Global(hDdeData, FALSE, FALSE, 
FALSE, FALSE);
+	    HGLOBAL	hMem = WDML_DataHandle2Global(hDdeData, TRUE, TRUE, FALSE, 
FALSE);
  	    if (!PostMessageA(pConv->hwndClient, WM_DDE_DATA, 
(WPARAM)pConv->hwndServer,
  			      ReuseDDElParam(pXAct->lParam, WM_DDE_REQUEST, WM_DDE_DATA,
  					     (UINT)hMem, (UINT)pXAct->atom)))

which did you change fResponse (or fAckReq) and fRelease to TRUE ?
since the server side isn't ready to handle the ack messages the client 
will in such cases, I'm not sure it's worth it. Moreover, it will 
complexify the memory management and create more leaks than already exist.

A+
-- 
Eric Pouech




More information about the wine-devel mailing list