https://bugs.documentfoundation.org/show_bug.cgi?id=119039

--- Comment #15 from Mike Kaganski <[email protected]> ---
(In reply to Noel Grandin from comment #14)

Thanks Noel!
Indeed, that is the object causing the double release in its dtor; but the
problem here seems to not be a missing AddRef, but rather some internal error.

The object is assigned and used (and double-released) inside
OleComponent::LoadEmbeddedObject. It is assigned using a path to a temporary
file, which definitely exists at the moment; and the call to StgOpenStorage
definitely creates an already AddRef'ed object, and is normal with all COM API
that takes a void** to assign.

Then in OleLoadSeh, a call to OleLoad MS API is done, and it's here where the
underlying COM object is released - because of an error trying to load it. I do
not know why they allow that happen at all - an error is not an excuse to
manage something they didn't AddRef'd; but IMO, we need to try to find out if
we can prevent the STG_E_FILENOTFOUND from OleLoadSeh. And if that fails, we
could *workaround* it using an AddRef before the call, and conditional Release
when it's not STG_E_FILENOTFOUND.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to