I'm using a 3rd party inproc COM component which sends events to
clients every few seconds. Everytime my sink interface receives an
update the memory creeps up. After running for a few hours - it
starts to get really noticable.

My client is MFC/ATL based with the Sink interface based on ATL/
IDispEventImp. VC2005.

The sink interace event function looks like this -

void __stdcall CSinkInterface::OnUpdate(BSTR bstrData)

// ::SysFreeString(&bstrData);

I'm not too sure if I should be calling ::SysFreeString on the BSTR?
from doing some research on the newsgroup I suspect the BSTR could be
the route of the problem - however I want to be doubley sure that I'm
doing nothing wrong within my client before reporting this to the
vendor of the COM component.

Anyone any suggestions/advise here? Or come up against similar
problem? I can put the full sink class implementation if needs be.

Thanks in advance