[analyzer] Fix scan-build to handle missing output directories.

Cwd::abs_path has a somewhat tricky semantics: if it's operand directory does not exist,
it'll return undefined (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=257568).
This may cause scan-build to silently ignore output directory (specified with -o) and
use /tmp instead of trying to create directory. This tiny patch fixes the problem.

A patch by Yury Gribov!

Differential Revision: http://reviews.llvm.org/D14535

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@252797 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Devin Coughlin 2015-11-11 20:39:03 +00:00
parent 6f286e5ce1
commit 58ac3983f9
1 changed files with 3 additions and 1 deletions

View File

@ -1478,7 +1478,9 @@ sub ProcessArgs {
# Construct an absolute path. Uses the current working directory
# as a base if the original path was not absolute.
$Options{OutputDir} = abs_path(shift @$Args);
my $OutDir = shift @$Args;
mkpath($OutDir) unless (-e $OutDir); # abs_path wants existing dir
$Options{OutputDir} = abs_path($OutDir);
next;
}