Firebreath 2.0插件在IE8中崩溃

时间:2016-08-17 03:00:10

标签: c++ activex firebreath

IE8在访问插件的任何属性或方法时崩溃,插件在IE10和11中正常工作。

我发现了坠机原因: 在IE8中,由于某种原因,ComPromise的m_settled仍然是假的。 当ComPromise Object销毁时,destroy方法调用ComPromise :: _ on onError并崩溃。

--- 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();
         }

在对代码进行评论之后,当我访问插件版本时,IE不会崩溃并返回script_error(方法调用失败)。 在调试模式下,IDispatchAPI.cpp(478)中的HRESULT为0x80020003。

0 个答案:

没有答案