From df36256d686b5e27033aab815c6b851c2c92841f Mon Sep 17 00:00:00 2001 From: Martin Thierer Date: Fri, 20 Jun 2014 21:40:34 +0200 Subject: [PATCH] Fix leak in complete() callback of Database.each() Add destructor to EachBaton that disposes the `completed` callback function. --- src/statement.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/statement.h b/src/statement.h index c708e7fe2..b79d9847c 100644 --- a/src/statement.h +++ b/src/statement.h @@ -122,10 +122,14 @@ class Statement : public ObjectWrap { struct Async; struct EachBaton : Baton { - EachBaton(Statement* stmt_, Handle cb_) : - Baton(stmt_, cb_) {} Persistent completed; Async* async; // Isn't deleted when the baton is deleted. + + EachBaton(Statement* stmt_, Handle cb_) : + Baton(stmt_, cb_) {} + virtual ~EachBaton() { + NanDisposePersistent(completed); + } }; struct PrepareBaton : Database::Baton {