[PATCH 2/2] ddeml: DdeClientTransaction don't linearize pData when it is actually an HDDEDATA.

Tristan Schmelcher tristan_schmelcher at alumni.uwaterloo.ca
Thu Dec 2 12:22:35 CST 2010


-------------- next part --------------
From ea874d22dd736ce8a6a43894a3a17fb05c8fe016 Mon Sep 17 00:00:00 2001
From: Tristan Schmelcher <tristan_schmelcher at alumni.uwaterloo.ca>
Date: Thu, 2 Dec 2010 10:16:58 -0800
Subject: ddeml: DdeClientTransaction don't linearize pData when it is actually an HDDEDATA.

---
 dlls/ddeml.dll16/ddeml.c          |    6 ++++++
 dlls/ddeml.dll16/ddeml.dll16.spec |    2 +-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/dlls/ddeml.dll16/ddeml.c b/dlls/ddeml.dll16/ddeml.c
index e0a9dda..c7cbd51 100644
--- a/dlls/ddeml.dll16/ddeml.c
+++ b/dlls/ddeml.dll16/ddeml.c
@@ -386,6 +386,12 @@ HDDEDATA WINAPI DdeClientTransaction16(LPVOID pData, DWORD cbData, HCONV hConv,
                                        HSZ hszItem, UINT16 wFmt, UINT16 wType,
                                        DWORD dwTimeout, LPDWORD pdwResult)
 {
+    if (cbData != (DWORD)-1)
+    {
+        /* pData is not a pointer if cbData is -1, so we linearize the address
+         * here rather than in the calling code. */
+        pData = MapSL((SEGPTR)pData);
+    }
     return DdeClientTransaction(pData, cbData, hConv, hszItem,
                                 wFmt, wType, dwTimeout, pdwResult);
 }
diff --git a/dlls/ddeml.dll16/ddeml.dll16.spec b/dlls/ddeml.dll16/ddeml.dll16.spec
index 81dfb9d..ded7103 100644
--- a/dlls/ddeml.dll16/ddeml.dll16.spec
+++ b/dlls/ddeml.dll16/ddeml.dll16.spec
@@ -7,7 +7,7 @@
 8 pascal -ret16 DdeDisconnect(long) DdeDisconnect16
 9 pascal -ret16 DdeQueryConvInfo(long long ptr) DdeQueryConvInfo16
 10 pascal -ret16 DdeSetUserHandle(long long long) DdeSetUserHandle16
-11 pascal DdeClientTransaction(ptr long long long word word long ptr) DdeClientTransaction16
+11 pascal DdeClientTransaction(long long long long word word long ptr) DdeClientTransaction16
 12 pascal -ret16 DdeAbandonTransaction(long long long) DdeAbandonTransaction16
 13 pascal -ret16 DdePostAdvise(long long long) DdePostAdvise16
 14 pascal DdeCreateDataHandle(long ptr long long long word word) DdeCreateDataHandle16
-- 
1.7.0.4


More information about the wine-patches mailing list