Quote:
Should NOT keep the returned dispatched pointer as the script has NOT requested it. Instead, $com().result should be filled with the pointer's converted UINT value, and the actual pointer be discarded

The result cannot be freed immediately because it needs to be used in $com().result. This could also be used, for example, by a script that passes the UINT of the dispatch pointer to a DLL that then uses the dispatch pointer. However, this is short-lived, so mIRC should be able to free it on the next $com()/comclose call without side-effects - unless the script has stored the value of the pointer and tries to use it again - but that would be a script issue. This change has been made to the next version, however COM support will need thorough testing. This change is essentially undoing changes due to previous gpf bug reports, although the COM code may have been less robust at the time.