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
# 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;
}