diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-19 21:14:29 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2010-11-19 21:14:29 +0000 |
commit | a962b40f0bcaee07296836e175112602c58e439f (patch) | |
tree | c24f615988c3392d3fe03cbf226f9c51be46b4b3 /lib/Support/CommandLine.cpp | |
parent | 9ef65cbbc6f23ee8c44b065d3a4feea11c471a2f (diff) |
Fix a use after free. Patch by Frits van Bommel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119842 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/CommandLine.cpp')
-rw-r--r-- | lib/Support/CommandLine.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/lib/Support/CommandLine.cpp b/lib/Support/CommandLine.cpp index ae66110ded..38ef084961 100644 --- a/lib/Support/CommandLine.cpp +++ b/lib/Support/CommandLine.cpp @@ -765,6 +765,15 @@ void cl::ParseCommandLineOptions(int argc, char **argv, } } + // Now that we know if -debug is specified, we can use it. + // Note that if ReadResponseFiles == true, this must be done before the + // memory allocated for the expanded command line is free()d below. + DEBUG(dbgs() << "Args: "; + for (int i = 0; i < argc; ++i) + dbgs() << argv[i] << ' '; + dbgs() << '\n'; + ); + // Free all of the memory allocated to the map. Command line options may only // be processed once! Opts.clear(); @@ -779,12 +788,6 @@ void cl::ParseCommandLineOptions(int argc, char **argv, free(*i); } - DEBUG(dbgs() << "Args: "; - for (int i = 0; i < argc; ++i) - dbgs() << argv[i] << ' '; - dbgs() << '\n'; - ); - // If we had an error processing our arguments, don't let the program execute if (ErrorParsing) exit(1); } |