From: SourceForge.net <no...@so...> - 2008-05-16 17:53:27
|
Bugs item #1836679, was opened at 2007-11-22 14:39 Message generated for change (Comment added) made by miesfeld You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=684730&aid=1836679&group_id=119701 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Classes Group: 3.3.0 >Status: Open Resolution: Fixed Priority: 5 Private: No Submitted By: Mark Miesfeld (miesfeld) Assigned to: Mark Miesfeld (miesfeld) Summary: OLEObject handling of DISP_E_EXCEPTION can crash interpreter Initial Comment: When an OLE Automation object returns DISP_E_EXCEPTION from IDispatch::Invoke()there is an EXCEPINFO struction that the object is supposed to fill out with details on the error. Reading the Microsoft docs leads one to believe that it is the OLE Automation object's responsibility to fill this in correctly when it returns DISP_E_EXCEPTION. However, it is apparent that some automation objects do not zero out the unused fields in the structure. In particular, the Microsoft Soap Client does not zero out the pfnDeferredFillIn field. This causes the OLEObject to derefence, as a function call, random memory when the Soap Client returns DISP_E_EXCEPTION. Which ulitimately crashes the intepreter, but also produces some bizarre at times. <grin> ---------------------------------------------------------------------- >Comment By: Mark Miesfeld (miesfeld) Date: 2008-05-16 10:53 Message: Logged In: YES user_id=191588 Originator: YES File Added: oleObjectUpdate.zip ---------------------------------------------------------------------- Comment By: Mark Miesfeld (miesfeld) Date: 2007-11-22 21:13 Message: Logged In: YES user_id=191588 Originator: YES Committed revision 1288. This bug was originally reported on the RexxLA list by Garry Smithwick. He found it using the MS Soap SDK. It is always hard to find documentation on the finer points of OLE Automation. This excerpt from: http://www.ddj.com/windows/184404681 says this about the EXCEPINFO structure: It's important to understand that the EXCEPINFO structure should be initialized to NULL (cleared out) when passed, and checked for any non-NULL members when ParseScriptText returns. Any BSTRs that appear in the structure must be released by calling SysFreeString(). ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=684730&aid=1836679&group_id=119701 |