summaryrefslogtreecommitdiffstatsabout
diff options
context:
space:
mode:
authorTobias Pfeifer2013-01-09 06:04:13 (EST)
committer Tobias Pfeifer2013-01-10 09:35:45 (EST)
commit8315439401ffb725270c32ebd7d341f3cb26e27f (patch)
treec1b5ded390a2c855001cc68eebe989090cc216d3
parent04214819784b722b7ab24bb82150b393a085b6b8 (diff)
downloadjgit-8315439401ffb725270c32ebd7d341f3cb26e27f.zip
jgit-8315439401ffb725270c32ebd7d341f3cb26e27f.tar.gz
jgit-8315439401ffb725270c32ebd7d341f3cb26e27f.tar.bz2
Fix NPE FS_Win32 when looking up git executable and home directoryrefs/changes/49/9549/2
avoiding redundant code Bug: 397336 Change-Id: I60e1baa52e00c5ec3915b859bfc6a4572611cc89
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java16
1 files 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 ce62628..73f9161 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 @@ class FS_Win32 extends FS {
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 @@ class FS_Win32 extends FS {
// 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 @@ class FS_Win32 extends FS {
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$