On 08.03.2017 11:25, Hans Leidekker wrote:
+ } }
msg->is_addressed = TRUE;
Not sure if it matters, but previously this was skipped in case of a failure. Also please note that depending on how many objects are used by an application, a separate CS for each might significantly increase memory usage.
- return S_OK; + + LeaveCriticalSection( &msg->cs ); + return hr; [...] - msg->init = init; - msg->state = WS_MESSAGE_STATE_INITIALIZED; - return write_envelope( msg ); + if ((hr = write_envelope( msg )) == S_OK) + { + msg->init = init; + msg->state = WS_MESSAGE_STATE_INITIALIZED; + }
Here, the new code also does something else than the old one. Previously the msg fields were changed unconditionally.