From cce14aa58b746b0669d9a35e9812a41124f9114e Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Wed, 12 Aug 2015 10:10:18 +0200 Subject: [PATCH 1/2] branch: fix memory leaks related to CStrings --- branch.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/branch.go b/branch.go index 42e1216..8cf73b6 100644 --- a/branch.go +++ b/branch.go @@ -94,6 +94,7 @@ func (repo *Repository) CreateBranch(branchName string, target *Commit, force bo var ptr *C.git_reference cBranchName := C.CString(branchName) + defer C.free(unsafe.Pointer(cBranchName)) cForce := cbool(force) cSignature, err := signature.toC() @@ -134,6 +135,7 @@ func (b *Branch) Delete() error { func (b *Branch) Move(newBranchName string, force bool, signature *Signature, msg string) (*Branch, error) { var ptr *C.git_reference cNewBranchName := C.CString(newBranchName) + defer C.free(unsafe.Pointer(cNewBranchName)) cForce := cbool(force) cSignature, err := signature.toC() @@ -180,6 +182,7 @@ func (repo *Repository) LookupBranch(branchName string, bt BranchType) (*Branch, var ptr *C.git_reference cName := C.CString(branchName) + defer C.free(unsafe.Pointer(cName)) runtime.LockOSThread() defer runtime.UnlockOSThread() @@ -208,6 +211,7 @@ func (b *Branch) Name() (string, error) { func (repo *Repository) RemoteName(canonicalBranchName string) (string, error) { cName := C.CString(canonicalBranchName) + defer C.free(unsafe.Pointer(cName)) nameBuf := C.git_buf{} @@ -225,6 +229,7 @@ func (repo *Repository) RemoteName(canonicalBranchName string) (string, error) { func (b *Branch) SetUpstream(upstreamName string) error { cName := C.CString(upstreamName) + defer C.free(unsafe.Pointer(cName)) runtime.LockOSThread() defer runtime.UnlockOSThread() @@ -251,6 +256,7 @@ func (b *Branch) Upstream() (*Reference, error) { func (repo *Repository) UpstreamName(canonicalBranchName string) (string, error) { cName := C.CString(canonicalBranchName) + defer C.free(unsafe.Pointer(cName)) nameBuf := C.git_buf{} -- 2.45.2 From 37bb1a6025eac8b1e689686f8830a20a266394cf Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Wed, 12 Aug 2015 10:21:49 +0200 Subject: [PATCH 2/2] merge: fix memory leak related to merge file opts --- merge.go | 1 + 1 file changed, 1 insertion(+) diff --git a/merge.go b/merge.go index 8c87391..183305c 100644 --- a/merge.go +++ b/merge.go @@ -394,6 +394,7 @@ func MergeFile(ancestor MergeFileInput, ours MergeFileInput, theirs MergeFileInp return nil, MakeGitError(ecode) } populateCMergeFileOptions(copts, *options) + defer freeCMergeFileOptions(copts) } runtime.LockOSThread() -- 2.45.2