summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVicent Martí <tanoku@gmail.com>2012-05-01 17:55:22 -0700
committerVicent Martí <tanoku@gmail.com>2012-05-01 17:55:22 -0700
commit5587a9c93054643d66b022d03b975720e539cc3e (patch)
tree9066237c97077be789fd1498ef9f400e743b9aa5 /src
parent52877c897504ed610bc957b88b6ba9e442077c07 (diff)
parent42ea35c06157a5c75cfd20e8fe3a813140c26485 (diff)
downloadlibgit2-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.c18
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);
}