diff options
author | Vicent Martà <tanoku@gmail.com> | 2012-05-01 17:55:22 -0700 |
---|---|---|
committer | Vicent Martà <tanoku@gmail.com> | 2012-05-01 17:55:22 -0700 |
commit | 5587a9c93054643d66b022d03b975720e539cc3e (patch) | |
tree | 9066237c97077be789fd1498ef9f400e743b9aa5 /src | |
parent | 52877c897504ed610bc957b88b6ba9e442077c07 (diff) | |
parent | 42ea35c06157a5c75cfd20e8fe3a813140c26485 (diff) | |
download | libgit2-5587a9c93054643d66b022d03b975720e539cc3e.tar.gz |
Merge pull request #658 from schu/remote-disconnect
remote: don't free transport on disconnect
Diffstat (limited to 'src')
-rw-r--r-- | src/remote.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/remote.c b/src/remote.c index 71cb62719..98c256929 100644 --- a/src/remote.c +++ b/src/remote.c @@ -381,13 +381,8 @@ void git_remote_disconnect(git_remote *remote) { assert(remote); - if (remote->transport != NULL) { - if (remote->transport->connected) + if (remote->transport != NULL && remote->transport->connected) remote->transport->close(remote->transport); - - remote->transport->free(remote->transport); - remote->transport = NULL; - } } void git_remote_free(git_remote *remote) @@ -395,14 +390,21 @@ void git_remote_free(git_remote *remote) if (remote == NULL) return; + if (remote->transport != NULL) { + git_remote_disconnect(remote); + + remote->transport->free(remote->transport); + remote->transport = NULL; + } + + git_vector_free(&remote->refs); + git__free(remote->fetch.src); git__free(remote->fetch.dst); git__free(remote->push.src); git__free(remote->push.dst); git__free(remote->url); git__free(remote->name); - git_vector_free(&remote->refs); - git_remote_disconnect(remote); git__free(remote); } |