summaryrefslogtreecommitdiff
path: root/commit.go
diff options
context:
space:
mode:
authorArtiom Di <[email protected]>2013-11-14 15:24:43 +0200
committerArtiom Di <[email protected]>2013-11-14 15:24:43 +0200
commit5e30c192e9f7219322887da7252c344d5be1ec05 (patch)
treed82a9bc90cb9198ff2f9d1cb893eb530387fcde9 /commit.go
parent295ec8894c0e96330a106d4854bea5c1e9d37f20 (diff)
Fix memleak for Config and parent commit objects
Diffstat (limited to 'commit.go')
-rw-r--r--commit.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/commit.go b/commit.go
index cacaa33..c633e2d 100644
--- a/commit.go
+++ b/commit.go
@@ -9,8 +9,8 @@ extern int _go_git_treewalk(git_tree *tree, git_treewalk_mode mode, void *ptr);
import "C"
import (
- "unsafe"
"time"
+ "unsafe"
)
// Commit
@@ -48,12 +48,13 @@ func (c Commit) Committer() *Signature {
}
func (c *Commit) Parent(n uint) *Commit {
- par := &Commit{}
- ret := C.git_commit_parent(&par.ptr, c.ptr, C.uint(n))
+ var cobj *C.git_object
+ ret := C.git_commit_parent(&cobj, c.ptr, C.uint(n))
if ret != 0 {
return nil
}
- return par
+
+ return allocObject(cobj).(*Commit)
}
func (c *Commit) ParentId(n uint) *Oid {
@@ -85,10 +86,10 @@ func newSignatureFromC(sig *C.git_signature) *Signature {
// the offset in mintes, which is what git wants
func (v *Signature) Offset() int {
_, offset := v.When.Zone()
- return offset/60
+ return offset / 60
}
-func (sig *Signature) toC() (*C.git_signature) {
+func (sig *Signature) toC() *C.git_signature {
var out *C.git_signature
name := C.CString(sig.Name)