]> granicus.if.org Git - clang/commitdiff
Use an std::vector<> instead of an array of ARG_MAX size, as ARG_MAX may not be defin...
authorTed Kremenek <kremenek@apple.com>
Thu, 15 Oct 2009 23:21:22 +0000 (23:21 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 15 Oct 2009 23:21:22 +0000 (23:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84220 91177308-0d34-0410-b5e6-96231b3b80d8

tools/CIndex/CIndex.cpp

index 5e999c10037eae65ac510f782c740e91774910ae..23bbb0c0eb67020d88040194e8d6857045be06b8 100644 (file)
@@ -25,6 +25,7 @@
 #include <cstdio>
 #include <dlfcn.h>
 #include <sys/wait.h>
+#include <vector>
 #include "llvm/System/Path.h"
 
 using namespace clang;
@@ -293,26 +294,25 @@ CXTranslationUnit clang_createTranslationUnitFromSourceFile(
   const char *source_filename,
   int num_command_line_args, const char **command_line_args) 
 {
-  // Build up the arguments for involking clang.
-  int argc = 0;
-  const char * argv[ARG_MAX];
-  argv[argc++] = clangPath;
-  argv[argc++] = "-emit-ast";
-  argv[argc++] = source_filename;
-  argv[argc++] = "-o";
+  // Build up the arguments for involing clang.
+  std::vector<const char *> argv;
+  argv.push_back(clangPath);
+  argv.push_back("-emit-ast");
+  argv.push_back(source_filename);
+  argv.push_back("-o");
   // Generate a temporary name for the AST file.
   char astTmpFile[L_tmpnam];
-  argv[argc++] = tmpnam(astTmpFile);
+  argv.push_back(tmpnam(astTmpFile));
   for (int i = num_command_line_args; i < num_command_line_args; i++)
-    argv[argc++] = command_line_args[i];
-  argv[argc] = 0;
-  
+    argv.push_back(command_line_args[i]);
+  argv.push_back(NULL);
+
   // Generate the AST file in a separate process.
   pid_t child_pid = fork();
   if (child_pid == 0) { // Child process
   
     // Execute the command, passing the appropriate arguments.
-    execv(argv[0], (char *const *)argv);
+    execv(argv[0], (char *const *)&argv[0]);
     
     // If execv returns, it failed.
     assert(0 && "execv() failed");