Index: src/JsEngine.cpp |
=================================================================== |
--- a/src/JsEngine.cpp |
+++ b/src/JsEngine.cpp |
@@ -15,6 +15,12 @@ |
return v8::Context::New(0, global); |
} |
+ void CheckTryCatch(const v8::TryCatch& tryCatch) |
+ { |
+ if (tryCatch.HasCaught()) |
+ throw AdblockPlus::JsError(tryCatch.Exception()); |
+ } |
+ |
std::string Slurp(std::istream& stream) |
{ |
std::stringstream content; |
@@ -39,11 +45,11 @@ |
const v8::HandleScope handleScope; |
const v8::Context::Scope contextScope(context); |
const v8::Handle<v8::String> v8Source = v8::String::New(source.c_str()); |
+ const v8::TryCatch tryCatch; |
const v8::Handle<v8::Script> script = v8::Script::Compile(v8Source); |
- const v8::TryCatch tryCatch; |
+ CheckTryCatch(tryCatch); |
const v8::Handle<const v8::Value> result = script->Run(); |
- if (result.IsEmpty()) |
- throw JsError(tryCatch.Exception()); |
+ CheckTryCatch(tryCatch); |
} |
void AdblockPlus::JsEngine::Load(const std::string& scriptPath) |
@@ -63,8 +69,7 @@ |
global->Get(v8::String::New(functionName.c_str()))); |
const v8::TryCatch tryCatch; |
const v8::Local<v8::Value> result = function->Call(function, 0, 0); |
- if (result.IsEmpty()) |
- throw JsError(tryCatch.Exception()); |
+ CheckTryCatch(tryCatch); |
const v8::String::AsciiValue ascii(result); |
return *ascii; |
} |