Browse Source

src: cleanup `Isolate::GetCurrent()`

PR-URL: https://github.com/iojs/io.js/pull/807
Reviewed-by: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-by: Trevor Norris <trev.norris@gmail.com>
v1.8.0-commit
Vladimir Kurchatkin 10 years ago
committed by Trevor Norris
parent
commit
8aed9d6610
  1. 18
      src/node.cc
  2. 2
      src/node.h
  3. 2
      src/node_object_wrap.h
  4. 3
      src/smalloc.cc

18
src/node.cc

@ -1687,23 +1687,21 @@ static const char* name_by_gid(gid_t gid) {
#endif #endif
static uid_t uid_by_name(Handle<Value> value) { static uid_t uid_by_name(Isolate* isolate, Handle<Value> value) {
if (value->IsUint32()) { if (value->IsUint32()) {
return static_cast<uid_t>(value->Uint32Value()); return static_cast<uid_t>(value->Uint32Value());
} else { } else {
// TODO(trevnorris): Fix to not use GetCurrent(). node::Utf8Value name(isolate, value);
node::Utf8Value name(Isolate::GetCurrent(), value);
return uid_by_name(*name); return uid_by_name(*name);
} }
} }
static gid_t gid_by_name(Handle<Value> value) { static gid_t gid_by_name(Isolate* isolate, Handle<Value> value) {
if (value->IsUint32()) { if (value->IsUint32()) {
return static_cast<gid_t>(value->Uint32Value()); return static_cast<gid_t>(value->Uint32Value());
} else { } else {
// TODO(trevnorris): Fix to not use GetCurrent(). node::Utf8Value name(isolate, value);
node::Utf8Value name(Isolate::GetCurrent(), value);
return gid_by_name(*name); return gid_by_name(*name);
} }
} }
@ -1728,7 +1726,7 @@ static void SetGid(const FunctionCallbackInfo<Value>& args) {
return env->ThrowTypeError("setgid argument must be a number or a string"); return env->ThrowTypeError("setgid argument must be a number or a string");
} }
gid_t gid = gid_by_name(args[0]); gid_t gid = gid_by_name(env->isolate(), args[0]);
if (gid == gid_not_found) { if (gid == gid_not_found) {
return env->ThrowError("setgid group id does not exist"); return env->ThrowError("setgid group id does not exist");
@ -1747,7 +1745,7 @@ static void SetUid(const FunctionCallbackInfo<Value>& args) {
return env->ThrowTypeError("setuid argument must be a number or a string"); return env->ThrowTypeError("setuid argument must be a number or a string");
} }
uid_t uid = uid_by_name(args[0]); uid_t uid = uid_by_name(env->isolate(), args[0]);
if (uid == uid_not_found) { if (uid == uid_not_found) {
return env->ThrowError("setuid user id does not exist"); return env->ThrowError("setuid user id does not exist");
@ -1809,7 +1807,7 @@ static void SetGroups(const FunctionCallbackInfo<Value>& args) {
gid_t* groups = new gid_t[size]; gid_t* groups = new gid_t[size];
for (size_t i = 0; i < size; i++) { for (size_t i = 0; i < size; i++) {
gid_t gid = gid_by_name(groups_list->Get(i)); gid_t gid = gid_by_name(env->isolate(), groups_list->Get(i));
if (gid == gid_not_found) { if (gid == gid_not_found) {
delete[] groups; delete[] groups;
@ -1856,7 +1854,7 @@ static void InitGroups(const FunctionCallbackInfo<Value>& args) {
return env->ThrowError("initgroups user not found"); return env->ThrowError("initgroups user not found");
} }
extra_group = gid_by_name(args[1]); extra_group = gid_by_name(env->isolate(), args[1]);
if (extra_group == gid_not_found) { if (extra_group == gid_not_found) {
if (must_free) if (must_free)

2
src/node.h

@ -190,7 +190,7 @@ NODE_EXTERN void RunAtExit(Environment* env);
// Used to be a macro, hence the uppercase name. // Used to be a macro, hence the uppercase name.
#define NODE_DEFINE_CONSTANT(target, constant) \ #define NODE_DEFINE_CONSTANT(target, constant) \
do { \ do { \
v8::Isolate* isolate = v8::Isolate::GetCurrent(); \ v8::Isolate* isolate = target->GetIsolate(); \
v8::Local<v8::String> constant_name = \ v8::Local<v8::String> constant_name = \
v8::String::NewFromUtf8(isolate, #constant); \ v8::String::NewFromUtf8(isolate, #constant); \
v8::Local<v8::Number> constant_value = \ v8::Local<v8::Number> constant_value = \

2
src/node_object_wrap.h

@ -36,7 +36,7 @@ class ObjectWrap {
inline v8::Local<v8::Object> handle() { inline v8::Local<v8::Object> handle() {
return handle(v8::Isolate::GetCurrent()); return v8::Local<v8::Object>::New(handle_->GetIsolate(), persistent());
} }

3
src/smalloc.cc

@ -472,8 +472,7 @@ const char RetainedAllocInfo::label_[] = "smalloc";
RetainedAllocInfo::RetainedAllocInfo(Handle<Value> wrapper) { RetainedAllocInfo::RetainedAllocInfo(Handle<Value> wrapper) {
// TODO(trevnorris): Fix to properly acquire the Isolate. Local<Object> obj = wrapper.As<Object>();
Local<Object> obj = wrapper->ToObject(Isolate::GetCurrent());
length_ = obj->GetIndexedPropertiesExternalArrayDataLength(); length_ = obj->GetIndexedPropertiesExternalArrayDataLength();
data_ = static_cast<char*>(obj->GetIndexedPropertiesExternalArrayData()); data_ = static_cast<char*>(obj->GetIndexedPropertiesExternalArrayData());
} }

Loading…
Cancel
Save