forked from OSchip/llvm-project
libclang: fix a bug in processing invalid arguments, introduced in r201249,
pointed out by Daniel Jasper in r201329 llvm-svn: 201346
This commit is contained in:
parent
8459762c88
commit
fbe5672746
|
@ -2686,6 +2686,11 @@ static void clang_parseTranslationUnit_Impl(void *UserData) {
|
||||||
unsigned options = PTUI->options;
|
unsigned options = PTUI->options;
|
||||||
CXTranslationUnit *out_TU = PTUI->out_TU;
|
CXTranslationUnit *out_TU = PTUI->out_TU;
|
||||||
|
|
||||||
|
// Set up the initial return values.
|
||||||
|
if (out_TU)
|
||||||
|
*out_TU = NULL;
|
||||||
|
PTUI->result = CXError_Failure;
|
||||||
|
|
||||||
// Check arguments.
|
// Check arguments.
|
||||||
if (!CIdx || !out_TU ||
|
if (!CIdx || !out_TU ||
|
||||||
(unsaved_files == NULL && num_unsaved_files != 0)) {
|
(unsaved_files == NULL && num_unsaved_files != 0)) {
|
||||||
|
@ -2693,10 +2698,6 @@ static void clang_parseTranslationUnit_Impl(void *UserData) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up the initial return values.
|
|
||||||
*out_TU = NULL;
|
|
||||||
PTUI->result = CXError_Failure;
|
|
||||||
|
|
||||||
CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
|
CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx);
|
||||||
|
|
||||||
if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
|
if (CXXIdx->isOptEnabled(CXGlobalOpt_ThreadBackgroundPriorityForIndexing))
|
||||||
|
@ -2826,12 +2827,8 @@ clang_parseTranslationUnit(CXIndex CIdx,
|
||||||
CIdx, source_filename, command_line_args, num_command_line_args,
|
CIdx, source_filename, command_line_args, num_command_line_args,
|
||||||
unsaved_files, num_unsaved_files, options, &TU);
|
unsaved_files, num_unsaved_files, options, &TU);
|
||||||
(void)Result;
|
(void)Result;
|
||||||
|
assert((TU && Result == CXError_Success) ||
|
||||||
// FIXME: This probably papers over a problem. If the result is not success,
|
(!TU && Result != CXError_Success));
|
||||||
// no TU should be set.
|
|
||||||
if (Result != CXError_Success)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
return TU;
|
return TU;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,3 +22,4 @@ if(CLANG_ENABLE_REWRITER)
|
||||||
add_subdirectory(Format)
|
add_subdirectory(Format)
|
||||||
add_subdirectory(Sema)
|
add_subdirectory(Sema)
|
||||||
endif()
|
endif()
|
||||||
|
add_subdirectory(libclang)
|
||||||
|
|
|
@ -14,7 +14,7 @@ ifndef CLANG_LEVEL
|
||||||
|
|
||||||
IS_UNITTEST_LEVEL := 1
|
IS_UNITTEST_LEVEL := 1
|
||||||
CLANG_LEVEL := ..
|
CLANG_LEVEL := ..
|
||||||
PARALLEL_DIRS = Basic Lex Driver
|
PARALLEL_DIRS = Basic Lex Driver libclang
|
||||||
|
|
||||||
include $(CLANG_LEVEL)/../..//Makefile.config
|
include $(CLANG_LEVEL)/../..//Makefile.config
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
add_clang_unittest(libclangTests
|
||||||
|
LibclangTest.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(libclangTests
|
||||||
|
libclang
|
||||||
|
)
|
|
@ -0,0 +1,17 @@
|
||||||
|
//===- unittests/libclang/LibclangTest.cpp --- libclang tests -------------===//
|
||||||
|
//
|
||||||
|
// The LLVM Compiler Infrastructure
|
||||||
|
//
|
||||||
|
// This file is distributed under the University of Illinois Open Source
|
||||||
|
// License. See LICENSE.TXT for details.
|
||||||
|
//
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
#include "clang-c/Index.h"
|
||||||
|
#include "gtest/gtest.h"
|
||||||
|
|
||||||
|
TEST(libclang, TestInvalidArgs) {
|
||||||
|
EXPECT_EQ(CXError_InvalidArguments,
|
||||||
|
clang_parseTranslationUnit2(0, 0, 0, 0, 0, 0, 0, 0));
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
##===- unittests/libclang/Makefile -------------------------*- Makefile -*-===##
|
||||||
|
#
|
||||||
|
# The LLVM Compiler Infrastructure
|
||||||
|
#
|
||||||
|
# This file is distributed under the University of Illinois Open Source
|
||||||
|
# License. See LICENSE.TXT for details.
|
||||||
|
#
|
||||||
|
##===----------------------------------------------------------------------===##
|
||||||
|
|
||||||
|
CLANG_LEVEL = ../..
|
||||||
|
TESTNAME = libclang
|
||||||
|
include $(CLANG_LEVEL)/../../Makefile.config
|
||||||
|
LINK_COMPONENTS := $(TARGETS_TO_BUILD) asmparser bitreader support mc option
|
||||||
|
|
||||||
|
# Note that 'USEDLIBS' must include all of the core clang libraries
|
||||||
|
# when -static is given to linker on cygming.
|
||||||
|
USEDLIBS = clang.a \
|
||||||
|
clangIndex.a clangFormat.a clangRewriteCore.a \
|
||||||
|
clangFrontend.a clangDriver.a \
|
||||||
|
clangTooling.a \
|
||||||
|
clangSerialization.a clangParse.a clangSema.a \
|
||||||
|
clangAnalysis.a clangEdit.a clangAST.a clangLex.a \
|
||||||
|
clangBasic.a
|
||||||
|
|
||||||
|
include $(CLANG_LEVEL)/unittests/Makefile
|
Loading…
Reference in New Issue