diff --git a/gitweb.cgi b/gitweb.cgi
index 986d7dacd60..cb033733b9e 100755
--- a/gitweb.cgi
+++ b/gitweb.cgi
@@ -404,12 +404,13 @@ sub git_read_head {
 	if (open my $fd, "-|", "$gitbin/git-rev-parse", "--verify", "HEAD") {
 		my $head = <$fd>;
 		close $fd;
-		chomp $head;
-		if ($head =~ m/^[0-9a-fA-F]{40}$/) {
-			$retval = $head;
+		if (defined $head && $head =~ /^([0-9a-fA-F]{40})$/) {
+			$retval = $1;
 		}
 	}
-	$ENV{'GIT_DIR'} = $oENV;
+	if (defined $oENV) {
+		$ENV{'GIT_DIR'} = $oENV;
+	}
 	return $retval;
 }