From 8bdf43bcaee433f5edb64b90380f0a1d4fc3a78e Mon Sep 17 00:00:00 2001 From: Steve O'Brien Date: Thu, 18 Jan 2018 20:21:07 +0000 Subject: [PATCH] c-index-test: small fix to CXString handling and disposal Summary: (Separating some unrelated changes out of D42043) Reviewers: vsk, benlangmuir, akyrtzi Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D42259 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@322883 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/c-index-test/c-index-test.c | 36 ++++++++++++++++--------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/tools/c-index-test/c-index-test.c b/tools/c-index-test/c-index-test.c index 7e80610bbc..61e42b26ee 100644 --- a/tools/c-index-test/c-index-test.c +++ b/tools/c-index-test/c-index-test.c @@ -1128,6 +1128,13 @@ static const char* GetCursorSource(CXCursor Cursor) { } } +static CXString createCXString(const char *CS) { + CXString Str; + Str.data = (const void *) CS; + Str.private_flags = 0; + return Str; +} + /******************************************************************************/ /* Callbacks. */ /******************************************************************************/ @@ -3090,7 +3097,7 @@ typedef struct { int first_check_printed; int fail_for_error; int abort; - const char *main_filename; + CXString main_filename; ImportedASTFilesData *importedASTs; IndexDataStringList *strings; CXTranslationUnit TU; @@ -3129,6 +3136,7 @@ static void printCXIndexLoc(CXIdxLoc loc, CXClientData client_data) { const char *cname; CXIdxClientFile file; unsigned line, column; + const char *main_filename; int isMainFile; index_data = (IndexData *)client_data; @@ -3143,7 +3151,8 @@ static void printCXIndexLoc(CXIdxLoc loc, CXClientData client_data) { } filename = clang_getFileName((CXFile)file); cname = clang_getCString(filename); - if (strcmp(cname, index_data->main_filename) == 0) + main_filename = clang_getCString(index_data->main_filename); + if (strcmp(cname, main_filename) == 0) isMainFile = 1; else isMainFile = 0; @@ -3345,14 +3354,11 @@ static void index_diagnostic(CXClientData client_data, static CXIdxClientFile index_enteredMainFile(CXClientData client_data, CXFile file, void *reserved) { IndexData *index_data; - CXString filename; index_data = (IndexData *)client_data; printCheck(index_data); - filename = clang_getFileName(file); - index_data->main_filename = clang_getCString(filename); - clang_disposeString(filename); + index_data->main_filename = clang_getFileName(file); printf("[enteredMainFile]: "); printCXIndexFile((CXIdxClientFile)file); @@ -3591,7 +3597,7 @@ static int index_compile_args(int num_args, const char **args, index_data.first_check_printed = 0; index_data.fail_for_error = 0; index_data.abort = 0; - index_data.main_filename = ""; + index_data.main_filename = createCXString(""); index_data.importedASTs = importedASTs; index_data.strings = NULL; index_data.TU = NULL; @@ -3607,6 +3613,7 @@ static int index_compile_args(int num_args, const char **args, if (index_data.fail_for_error) result = -1; + clang_disposeString(index_data.main_filename); free_client_data(&index_data); return result; } @@ -3628,7 +3635,7 @@ static int index_ast_file(const char *ast_file, index_data.first_check_printed = 0; index_data.fail_for_error = 0; index_data.abort = 0; - index_data.main_filename = ""; + index_data.main_filename = createCXString(""); index_data.importedASTs = importedASTs; index_data.strings = NULL; index_data.TU = TU; @@ -3641,6 +3648,7 @@ static int index_ast_file(const char *ast_file, result = -1; clang_disposeTranslationUnit(TU); + clang_disposeString(index_data.main_filename); free_client_data(&index_data); return result; } @@ -4133,9 +4141,7 @@ int print_usrs(const char **I, const char **E) { if (!isUSR(I[2])) return not_usr("", I[2]); else { - CXString x; - x.data = (void*) I[2]; - x.private_flags = 0; + CXString x = createCXString(I[2]); print_usr(clang_constructUSR_ObjCIvar(I[1], x)); } @@ -4160,9 +4166,7 @@ int print_usrs(const char **I, const char **E) { if (!isUSR(I[3])) return not_usr("", I[3]); else { - CXString x; - x.data = (void*) I[3]; - x.private_flags = 0; + CXString x = createCXString(I[3]); print_usr(clang_constructUSR_ObjCMethod(I[1], atoi(I[2]), x)); } I += 4; @@ -4190,9 +4194,7 @@ int print_usrs(const char **I, const char **E) { if (!isUSR(I[2])) return not_usr("", I[2]); else { - CXString x; - x.data = (void*) I[2]; - x.private_flags = 0; + CXString x = createCXString(I[2]); print_usr(clang_constructUSR_ObjCProperty(I[1], x)); } I += 3; -- 2.40.0