diff options
| author | Carlos Martín Nieto <[email protected]> | 2013-09-18 09:23:47 +0200 |
|---|---|---|
| committer | Carlos Martín Nieto <[email protected]> | 2013-12-18 16:18:32 +0100 |
| commit | a40bdfd4202db244bfc5da348a0f0c528ef122cd (patch) | |
| tree | 115fcae49287c82eb55bb275cbbd4556fbed72b7 /commit.go | |
| parent | 625ffd022e2c39f3820543cc1239deeb21837266 (diff) | |
Lock the OS thread when acessing errors
The library stores error information in thread-local storage, which
means we need to make sure that the Go runtime doesn't switch OS
threads between the time we call a function and th time we attempt to
retrieve the error information.
Diffstat (limited to 'commit.go')
| -rw-r--r-- | commit.go | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -9,6 +9,7 @@ extern int _go_git_treewalk(git_tree *tree, git_treewalk_mode mode, void *ptr); import "C" import ( + "runtime" "time" "unsafe" ) @@ -25,6 +26,9 @@ func (c Commit) Message() string { func (c Commit) Tree() (*Tree, error) { var ptr *C.git_object + runtime.LockOSThread() + defer runtime.UnlockOSThread() + err := C.git_commit_tree(&ptr, c.ptr) if err < 0 { return nil, LastError() |
