LockOSThread in CurrentOperationIndex for git error creation
diff --git a/rebase.go b/rebase.go
index 8384d68..8553e25 100644
--- a/rebase.go
+++ b/rebase.go
@@ -145,16 +145,21 @@
 // OperationAt gets the rebase operation specified by the given index.
 func (rebase *Rebase) OperationAt(index uint) *RebaseOperation {
 	operation := C.git_rebase_operation_byindex(rebase.ptr, C.size_t(index))
+	
 	return newRebaseOperationFromC(operation)
 }
 
 // CurrentOperationIndex gets the index of the rebase operation that is currently being applied.
 // Returns an error if no rebase operation is currently applied.
 func (rebase *Rebase) CurrentOperationIndex() (uint, error) {
+	runtime.LockOSThread()
+	defer runtime.UnlockOSThread()
+
 	operationIndex := int(C.git_rebase_operation_current(rebase.ptr))
 	if operationIndex == C.GIT_REBASE_NO_OPERATION {
 		return 0, MakeGitError(C.GIT_REBASE_NO_OPERATION)
 	}
+
 	return uint(operationIndex), nil
 }
 
diff --git a/rebase_test.go b/rebase_test.go
index 9c8e0c2..fb88a4e 100644
--- a/rebase_test.go
+++ b/rebase_test.go
@@ -9,29 +9,6 @@
 
 // Tests
 
-func TestDefaultRebaseOptions(t *testing.T) {
-	opts, err := DefaultRebaseOptions()
-	checkFatal(t, err)
-
-	if opts.Version != 1 {
-		t.Error("Expected opts Version to equal 1, got ", opts.Version)
-	}
-	if opts.Quiet != 0 {
-		t.Error("Expected opts Quiet to equal 1, got ", opts.Quiet)
-	}
-	if opts.InMemory != 0 {
-		t.Error("Expected opts InMemory to equal 1, got ", opts.InMemory)
-	}
-	if opts.RewriteNotesRef != "" {
-		t.Error("Expected opts RewriteNotesRef to equal 1, got ", opts.RewriteNotesRef)
-	}
-
-	copts := opts.toC()
-	if copts == nil {
-		t.Error("Copts should not be nil")
-	}
-}
-
 func TestRebaseAbort(t *testing.T) {
 	// TEST DATA