diff --git a/generate/input/descriptor.json b/generate/input/descriptor.json index a116184ef..29b5b65cc 100644 --- a/generate/input/descriptor.json +++ b/generate/input/descriptor.json @@ -2499,10 +2499,16 @@ } }, "git_tree_entry_byindex": { - "jsFunctionName": "_entryByIndex" + "jsFunctionName": "_entryByIndex", + "return": { + "ownedByThis": true + } }, "git_tree_entry_byname": { - "jsFunctionName": "_entryByName" + "jsFunctionName": "_entryByName", + "return": { + "ownedByThis": true + } }, "git_tree_entrycount": { "jsFunctionName": "entryCount" @@ -2539,6 +2545,7 @@ } }, "tree_entry": { + "selfFreeing": true, "dupFunction": "git_tree_entry_dup", "freeFunctionName": "git_tree_entry_free", "functions": { diff --git a/generate/scripts/helpers.js b/generate/scripts/helpers.js index bb4953e8e..f3bd3772f 100644 --- a/generate/scripts/helpers.js +++ b/generate/scripts/helpers.js @@ -251,7 +251,7 @@ var Helpers = { arg.cppClassName = Helpers.cTypeToCppName(arg.cType); arg.jsClassName = utils.titleCase(Helpers.cTypeToJsName(arg.cType)); - var libgitType = Helpers.decorateLibgitType(arg, libgit2.types, enums); + Helpers.decorateLibgitType(arg, libgit2.types, enums); // Some arguments can be callbacks if (Helpers.isCallbackFunction(type)) { @@ -280,11 +280,6 @@ var Helpers = { argOverrides.cppClassName !== "Array" && _.every(allArgs, function(_arg) { return !_arg.isSelf; }); } - - if (arg.isReturn && libgitType) { - arg.selfFreeing = libgitType.selfFreeing; - } - if (arg.isReturn && fnDef.return && fnDef.return.type === "int") { fnDef.return.isErrorCode = true; fnDef.isAsync = true; diff --git a/test/tests/tree_entry.js b/test/tests/tree_entry.js index 178bf1168..b4d0706c5 100644 --- a/test/tests/tree_entry.js +++ b/test/tests/tree_entry.js @@ -2,6 +2,8 @@ var assert = require("assert"); var path = require("path"); var local = path.join.bind(path, __dirname); +var leakTest = require("../utils/leak_test"); + describe("TreeEntry", function() { var NodeGit = require("../../"); var Repository = NodeGit.Repository; @@ -153,4 +155,15 @@ describe("TreeEntry", function() { assert.equal(entry.isSubmodule(), false); }); }); + + it("does not leak", function() { + var test = this; + + return leakTest(NodeGit.TreeEntry, function() { + return test.commit.getTree() + .then(function(tree) { + return tree.entryByPath("example"); + }); + }); + }); });