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.
pull/5010/head
Ben Noordhuis 2013-07-05 02:20:37 +02:00
parent 4c38742dd8
commit 806e300878
1 changed files with 1 additions and 0 deletions

View File

@ -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();
} }