diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java index 9de2803c0..4aaee8d96 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/api/CloneCommand.java @@ -127,16 +127,23 @@ public class CloneCommand extends TransportCommand { */ public Git call() throws GitAPIException, InvalidRemoteException, org.eclipse.jgit.api.errors.TransportException { + Repository repository = null; try { URIish u = new URIish(uri); - Repository repository = init(u); + repository = init(u); FetchResult result = fetch(repository, u); if (!noCheckout) checkout(repository, result); return new Git(repository); } catch (IOException ioe) { + if (repository != null) { + repository.close(); + } throw new JGitInternalException(ioe.getMessage(), ioe); } catch (URISyntaxException e) { + if (repository != null) { + repository.close(); + } throw new InvalidRemoteException(MessageFormat.format( JGitText.get().invalidRemote, remote)); }