| Index: src/JsValue.cpp |
| diff --git a/src/JsValue.cpp b/src/JsValue.cpp |
| index df4b72e33be2dc2819994fcc7e5aa1e525022298..1bc74903758f1911259d99c1dc48b16942fe6bcd 100644 |
| --- a/src/JsValue.cpp |
| +++ b/src/JsValue.cpp |
| @@ -25,18 +25,23 @@ |
| AdblockPlus::JsValue::JsValue(AdblockPlus::JsEnginePtr jsEngine, |
| v8::Handle<v8::Value> value) |
| : jsEngine(jsEngine), |
| - value(jsEngine->isolate, value) |
| + value(new v8::Persistent<v8::Value>(jsEngine->isolate, value)) |
| { |
| } |
| -AdblockPlus::JsValue::JsValue(AdblockPlus::JsValuePtr value) |
| - : jsEngine(value->jsEngine), |
| - value(value->value) |
| +AdblockPlus::JsValue::JsValue(AdblockPlus::JsValue&& src) |
| + : jsEngine(src.jsEngine), |
| + value(std::move(src.value)) |
| { |
| } |
| AdblockPlus::JsValue::~JsValue() |
| { |
| + if (value) |
| + { |
| + value->Dispose(); |
|
Eric
2016/01/26 18:37:40
The previous code had "Dispose(isolate)". Was ther
sergei
2016/01/27 10:21:14
The implementation of Dispose(isolate) is the foll
Eric
2016/02/08 19:50:07
Clear as mud.
A version number would a much bette
|
| + value.reset(); |
| + } |
| } |
| bool AdblockPlus::JsValue::IsUndefined() const |
| @@ -163,7 +168,7 @@ void AdblockPlus::JsValue::SetProperty(const std::string& name, v8::Handle<v8::V |
| v8::Local<v8::Value> AdblockPlus::JsValue::UnwrapValue() const |
| { |
| - return v8::Local<v8::Value>::New(jsEngine->isolate, value); |
| + return v8::Local<v8::Value>::New(jsEngine->isolate, *value); |
| } |
| void AdblockPlus::JsValue::SetProperty(const std::string& name, const std::string& val) |
| @@ -208,7 +213,8 @@ AdblockPlus::JsValuePtr AdblockPlus::JsValue::Call(const JsValueList& params, Js |
| const JsContext context(jsEngine); |
| if (!thisPtr) |
| { |
| - v8::Local<v8::Context> localContext = v8::Local<v8::Context>::New(jsEngine->isolate, jsEngine->context); |
| + v8::Local<v8::Context> localContext = v8::Local<v8::Context>::New( |
| + jsEngine->isolate, *jsEngine->context); |
| thisPtr = JsValuePtr(new JsValue(jsEngine, localContext->Global())); |
| } |
| if (!thisPtr->IsObject()) |