]> granicus.if.org Git - clang/commitdiff
[analyzer] Fix scan-build to handle missing output directories.
authorDevin Coughlin <dcoughlin@apple.com>
Wed, 11 Nov 2015 20:39:03 +0000 (20:39 +0000)
committerDevin Coughlin <dcoughlin@apple.com>
Wed, 11 Nov 2015 20:39:03 +0000 (20:39 +0000)
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

tools/scan-build/scan-build

index 65dc4fe1fa33784c64bd587f4bf3f7ae0eba1c45..be6056ccb9dd0468e54d91f6f01bd71c4c69a4a4 100755 (executable)
@@ -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;
     }