From 5e9d3bf799068e77936c60f23317792ed7eeb454 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 7 Dec 2011 14:35:23 +0000 Subject: [PATCH] Fix the size of the buffer when using wxIPC::Execute() with DDE. Don't multiply the "realSize" variable by sizeof(wxChar) when passing it to DdeClientTransaction(), as its name indicates it is already supposed to be the size of the data and not the length of the string so just ensure that it is always correctly set to the size and not length when initializing it. Closes #13734. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/msw/dde.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/msw/dde.cpp b/src/msw/dde.cpp index d59e1256d3..bb85ac799a 100644 --- a/src/msw/dde.cpp +++ b/src/msw/dde.cpp @@ -593,6 +593,10 @@ wxDDEConnection::DoExecute(const void *data, size_t size, wxIPCFormat format) realSize = conv->ToWChar((wchar_t *)realData, realSize, text, len); if ( realSize == wxCONV_FAILED ) return false; + + // We need to pass the size of the buffer to DdeClientTransaction() and + // not the length of the string. + realSize *= sizeof(wchar_t); } #else // !wxUSE_UNICODE if ( format == wxIPC_UNICODETEXT ) @@ -635,7 +639,7 @@ wxDDEConnection::DoExecute(const void *data, size_t size, wxIPCFormat format) DWORD result; bool ok = DdeClientTransaction(realData, - realSize*sizeof(wxChar), + realSize, GetHConv(), NULL, // MSDN: if the transaction specified by -- 2.47.2