]> granicus.if.org Git - clang/commitdiff
Attempt to always dispose of the CXIndex object in c-index-test.
authorTed Kremenek <kremenek@apple.com>
Thu, 11 Feb 2010 07:41:25 +0000 (07:41 +0000)
committerTed Kremenek <kremenek@apple.com>
Thu, 11 Feb 2010 07:41:25 +0000 (07:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95864 91177308-0d34-0410-b5e6-96231b3b80d8

tools/c-index-test/c-index-test.c

index 26df528ca651480ae804f45e1d46020f94bc4a7d..b33b0f4aa775f729232be492b4df67d93ec8962c 100644 (file)
@@ -493,13 +493,18 @@ int perform_test_load_tu(const char *file, const char *filter,
                          PostVisitTU PV) {
   CXIndex Idx;
   CXTranslationUnit TU;
+  int result;
   Idx = clang_createIndex(/* excludeDeclsFromPCH */ 
                           !strcmp(filter, "local") ? 1 : 0);
   
-  if (!CreateTranslationUnit(Idx, file, &TU))
+  if (!CreateTranslationUnit(Idx, file, &TU)) {
+    clang_disposeIndex(Idx);
     return 1;
+  }
 
-  return perform_test_load(Idx, TU, filter, prefix, Visitor, PV);
+  result = perform_test_load(Idx, TU, filter, prefix, Visitor, PV);
+  clang_disposeIndex(Idx);
+  return result;
 }
 
 int perform_test_load_source(int argc, const char **argv,
@@ -519,8 +524,10 @@ int perform_test_load_source(int argc, const char **argv,
   if (UseExternalASTs && strlen(UseExternalASTs))
     clang_setUseExternalASTGeneration(Idx, 1);
 
-  if (parse_remapped_files(argc, argv, 0, &unsaved_files, &num_unsaved_files))
+  if (parse_remapped_files(argc, argv, 0, &unsaved_files, &num_unsaved_files)) {
+    clang_disposeIndex(Idx);
     return -1;
+  }
 
   TU = clang_createTranslationUnitFromSourceFile(Idx, 0, 
                                                  argc - num_unsaved_files, 
@@ -531,11 +538,13 @@ int perform_test_load_source(int argc, const char **argv,
                                                  stderr);
   if (!TU) {
     fprintf(stderr, "Unable to load translation unit!\n");
+    clang_disposeIndex(Idx);
     return 1;
   }
 
   result = perform_test_load(Idx, TU, filter, NULL, Visitor, PV);
   free_remapped_files(unsaved_files, num_unsaved_files);
+  clang_disposeIndex(Idx);
   return result;
 }