X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9a83f860948059b0273b5cc6d9e43fadad3ebfca..96c9640205933ad0673d5af2c96af0816c50160c:/src/msw/dde.cpp?ds=sidebyside diff --git a/src/msw/dde.cpp b/src/msw/dde.cpp index 330ffa077d..bb85ac799a 100644 --- a/src/msw/dde.cpp +++ b/src/msw/dde.cpp @@ -139,7 +139,7 @@ private: IMPLEMENT_DYNAMIC_CLASS(wxDDEServer, wxServerBase) IMPLEMENT_DYNAMIC_CLASS(wxDDEClient, wxClientBase) -IMPLEMENT_CLASS(wxDDEConnection, wxConnectionBase) +IMPLEMENT_DYNAMIC_CLASS(wxDDEConnection, wxConnectionBase) IMPLEMENT_DYNAMIC_CLASS(wxDDEModule, wxModule) // ============================================================================ @@ -327,7 +327,6 @@ wxDDEServer::~wxDDEServer() { wxDDEConnection *connection = node->GetData(); wxDDEConnectionList::compatibility_iterator next = node->GetNext(); - connection->SetConnected(false); connection->OnDisconnect(); // May delete the node implicitly node = next; } @@ -594,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 ) @@ -636,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