IE8 crashed when access any property or method of plugin, and plugin work fine in IE10 and 11.
I have found the crash reason: In IE8, the m_settled of ComPromise is still false for some reason. When ComPromise Object destroy, the destroy method calls ComPromise::_onError and crash.
--- a/src/ActiveXCore/ComPromise.h
+++ b/src/ActiveXCore/ComPromise.h
@@ -53,7 +53,7 @@ namespace FB { namespace ActiveX {
void Invalidate() {
if (!m_settled) {
- _onError(std::runtime_error("Invalidated"));
+ //_onError(std::runtime_error("Invalidated"));
}
m_promise.invalidate();
}
After comment the code, the IE doesn't crash and return script_error(Method invoke failed) when I access the version of plugin. In debug mode, the HRESULT is 0x80020003 in IDispatchAPI.cpp(478).
User contributions licensed under CC BY-SA 3.0