Browse Source

src: fix memory leak in UsingDomains()

UsingDomains() assigned process_tickCallback when it had already
been set by MakeCallback() a few frames down the call stack.

Dispose the handle first or we'll retain whatever is in the lexical
closure of the old process._tickCallback function.

Fixes #5795.
v0.10.13-release
Ben Noordhuis 11 years ago
parent
commit
806e300878
  1. 1
      src/node.cc

1
src/node.cc

@ -919,6 +919,7 @@ Handle<Value> UsingDomains(const Arguments& args) {
Local<Function> ndt = ndt_v.As<Function>(); Local<Function> ndt = ndt_v.As<Function>();
process->Set(String::New("_tickCallback"), tdc); process->Set(String::New("_tickCallback"), tdc);
process->Set(String::New("nextTick"), ndt); process->Set(String::New("nextTick"), ndt);
process_tickCallback.Dispose(); // Possibly already set by MakeCallback().
process_tickCallback = Persistent<Function>::New(tdc); process_tickCallback = Persistent<Function>::New(tdc);
return Undefined(); return Undefined();
} }

Loading…
Cancel
Save