diff options
-rw-r--r-- | src/mongo/scripting/engine_v8.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/mongo/scripting/engine_v8.cpp b/src/mongo/scripting/engine_v8.cpp index 5aa40b1abf0..4512ea02bac 100644 --- a/src/mongo/scripting/engine_v8.cpp +++ b/src/mongo/scripting/engine_v8.cpp @@ -603,8 +603,7 @@ namespace mongo { // execution terminated return v8::Undefined(); - v8::Local<v8::External> f = - v8::External::Cast(*args.Callee()->Get(scope->strLitToV8("_v8_function"))); + v8::Local<v8::External> f = v8::Local<v8::External>::Cast(args.Data()); v8Function function = (v8Function)(f->Value()); v8::Handle<v8::Value> ret; string exceptionText; @@ -1163,8 +1162,9 @@ namespace mongo { } v8::Handle<v8::FunctionTemplate> V8Scope::createV8Function(v8Function func) { - v8::Handle<v8::FunctionTemplate> ft = v8::FunctionTemplate::New(v8Callback); - ft->Set(strLitToV8("_v8_function"), v8::External::New(reinterpret_cast<void*>(func)), + v8::Handle<v8::Value> funcHandle = v8::External::New(reinterpret_cast<void*>(func)); + v8::Handle<v8::FunctionTemplate> ft = v8::FunctionTemplate::New(v8Callback, funcHandle); + ft->Set(strLitToV8("_v8_function"), v8::Boolean::New(true), static_cast<v8::PropertyAttribute>(v8::DontEnum | v8::ReadOnly)); return ft; } |