| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2658,19 +2658,22 @@ | |||
| 2658 | 2658 | "functions": { | |
| 2659 | 2659 | "git_tree_entry_byid": { | |
| 2660 | 2660 | "return": { | |
| 2661 | - "ownedByThis": true | ||
| 2661 | + "ownedByThis": true, | ||
| 2662 | + "selfFreeing": false | ||
| 2662 | 2663 | } | |
| 2663 | 2664 | }, | |
| 2664 | 2665 | "git_tree_entry_byindex": { | |
| 2665 | 2666 | "jsFunctionName": "_entryByIndex", | |
| 2666 | 2667 | "return": { | |
| 2667 | - "ownedByThis": true | ||
| 2668 | + "ownedByThis": true, | ||
| 2669 | + "selfFreeing": false | ||
| 2668 | 2670 | } | |
| 2669 | 2671 | }, | |
| 2670 | 2672 | "git_tree_entry_byname": { | |
| 2671 | 2673 | "jsFunctionName": "_entryByName", | |
| 2672 | 2674 | "return": { | |
| 2673 | - "ownedByThis": true | ||
| 2675 | + "ownedByThis": true, | ||
| 2676 | + "selfFreeing": false | ||
| 2674 | 2677 | } | |
| 2675 | 2678 | }, | |
| 2676 | 2679 | "git_tree_entrycount": { | |
@@ -2691,6 +2694,21 @@ | |||
| 2691 | 2694 | "git_treebuilder_filter": { | |
| 2692 | 2695 | "ignore": true | |
| 2693 | 2696 | }, | |
| 2697 | + "git_treebuilder_get": { | ||
| 2698 | + "return": { | ||
| 2699 | + "selfFreeing": false, | ||
| 2700 | + "ownedByThis": true | ||
| 2701 | + } | ||
| 2702 | + }, | ||
| 2703 | + "git_treebuilder_insert": { | ||
| 2704 | + "isAsync": false, | ||
| 2705 | + "args": { | ||
| 2706 | + "out": { | ||
| 2707 | + "selfFreeing": false, | ||
| 2708 | + "ownedByThis": true | ||
| 2709 | + } | ||
| 2710 | + } | ||
| 2711 | + }, | ||
| 2694 | 2712 | "git_treebuilder_write": { | |
| 2695 | 2713 | "args": { | |
| 2696 | 2714 | "id": { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5,10 +5,14 @@ var promisify = require("promisify-node"); | |||
| 5 | 5 | var readDir = promisify(fs.readdir); | |
| 6 | 6 | var local = path.join.bind(path, __dirname); | |
| 7 | 7 | ||
| 8 | + var leakTest = require("../utils/leak_test"); | ||
| 9 | + | ||
| 8 | 10 | describe("TreeBuilder", function(){ | |
| 9 | 11 | ||
| 10 | 12 | var Git = require("../../"); | |
| 11 | 13 | var reposPath = local("../repos/workdir"); | |
| 14 | + var oid = "111dd657329797f6165f52f5085f61ac976dcf04"; | ||
| 15 | + | ||
| 12 | 16 | //setup test repo each test | |
| 13 | 17 | beforeEach(function() { | |
| 14 | 18 | var test = this; | |
@@ -76,4 +80,19 @@ describe("TreeBuilder", function(){ | |||
| 76 | 80 | return Git.Tree.lookup(test.repo, newTreeEntry.oid()); | |
| 77 | 81 | }); | |
| 78 | 82 | }); | |
| 83 | + | ||
| 84 | + it("does not leak inserts", function() { | ||
| 85 | + var test = this; | ||
| 86 | + | ||
| 87 | + // The underlying C++ git_tree_entry is owned by the treebuilder that | ||
| 88 | + // creates it. But since git_tree_entry is duplicable the generator will | ||
| 89 | + // duplicate it and mark it as self freeing. | ||
| 90 | + // Validate this with the leakTest. | ||
| 91 | + return leakTest(Git.TreeEntry, function() { | ||
| 92 | + return Git.Treebuilder.create(test.repo, null) | ||
| 93 | + .then(function(builder) { | ||
| 94 | + return builder.insert("test", oid, Git.TreeEntry.FILEMODE.BLOB); | ||
| 95 | + }); | ||
| 96 | + }); | ||
| 97 | + }); | ||
| 79 | 98 | }); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments