From 55aacdb89100e6edf71fe8d1e16820fd74a055a6 Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Fri, 23 Sep 2016 09:25:01 -0700 Subject: [PATCH 1/2] Mark revwalk as selfFreeing --- generate/input/descriptor.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index a116184ef..0df5ca52d 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2100,6 +2100,7 @@ "ignore": true }, "revwalk": { + "selfFreeing": true, "dependencies": [ "../include/commit.h", "../include/functions/copy.h" @@ -2108,9 +2109,6 @@ "git_revwalk_add_hide_cb": { "ignore": true }, - "git_revwalk_free": { - "ignore": true - }, "git_revwalk_new": { "isAsync": false } From c9a0daf68f13a85c416e13a036fc8f5725625f08 Mon Sep 17 00:00:00 2001 From: Stjepan Rajko Date: Fri, 23 Sep 2016 13:59:21 -0700 Subject: [PATCH 2/2] Add revwalk leak test --- test/tests/revwalk.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/tests/revwalk.js b/test/tests/revwalk.js index 96bb736c8..cc3942c37 100644 --- a/test/tests/revwalk.js +++ b/test/tests/revwalk.js @@ -5,6 +5,8 @@ var fse = promisify(require("fs-extra")); var path = require("path"); var local = path.join.bind(path, __dirname); +var leakTest = require("../utils/leak_test"); + describe("Revwalk", function() { var NodeGit = require("../../"); var Repository = NodeGit.Repository; @@ -309,6 +311,14 @@ describe("Revwalk", function() { }); }); + it("does not leak", function() { + var test = this; + + return leakTest(NodeGit.Revwalk, function() { + return Promise.resolve(NodeGit.Revwalk.create(test.repository)); + }); + }); + // This test requires forcing garbage collection, so mocha needs to be run // via node rather than npm, with a la `node --expose-gc [pathtohmoca] // [testglob]`