From 8315439401ffb725270c32ebd7d341f3cb26e27f Mon Sep 17 00:00:00 2001 From: Tobias Pfeifer Date: Wed, 9 Jan 2013 12:04:13 +0100 Subject: [PATCH] Fix NPE FS_Win32 when looking up git executable and home directory avoiding redundant code Bug: 397336 Change-Id: I60e1baa52e00c5ec3915b859bfc6a4572611cc89 --- .../src/org/eclipse/jgit/util/FS_Win32.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java index ce62628e8..73f9161ca 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java @@ -90,7 +90,7 @@ protected File discoverGitPrefix() { String path = SystemReader.getInstance().getenv("PATH"); //$NON-NLS-1$ File gitExe = searchPath(path, "git.exe", "git.cmd"); //$NON-NLS-1$ //$NON-NLS-2$ if (gitExe != null) - return gitExe.getParentFile().getParentFile(); + return resolveGrandparentFile(gitExe); // This isn't likely to work, if bash is in $PATH, git should // also be in $PATH. But its worth trying. @@ -102,7 +102,16 @@ protected File discoverGitPrefix() { // The path may be in cygwin/msys notation so resolve it right away gitExe = resolve(null, w); if (gitExe != null) - return gitExe.getParentFile().getParentFile(); + return resolveGrandparentFile(gitExe); + } + return null; + } + + private static File resolveGrandparentFile(File grandchild) { + if (grandchild != null) { + File parent = grandchild.getParentFile(); + if (parent != null) + return parent.getParentFile(); } return null; } @@ -115,7 +124,8 @@ protected File userHomeImpl() { String homeDrive = SystemReader.getInstance().getenv("HOMEDRIVE"); //$NON-NLS-1$ if (homeDrive != null) { String homePath = SystemReader.getInstance().getenv("HOMEPATH"); //$NON-NLS-1$ - return new File(homeDrive, homePath); + if (homePath != null) + return new File(homeDrive, homePath); } String homeShare = SystemReader.getInstance().getenv("HOMESHARE"); //$NON-NLS-1$