Merge pull request #548 from vitalyster/trans_unit
Fix 'vector subscription out of range' MSVC assertions
This commit is contained in:
commit
ee12530df0
@ -56,13 +56,15 @@ TranslationUnit::TranslationUnit(
|
|||||||
|
|
||||||
std::vector< CXUnsavedFile > cxunsaved_files =
|
std::vector< CXUnsavedFile > cxunsaved_files =
|
||||||
ToCXUnsavedFiles( unsaved_files );
|
ToCXUnsavedFiles( unsaved_files );
|
||||||
|
const CXUnsavedFile *unsaved = cxunsaved_files.size() > 0
|
||||||
|
? &cxunsaved_files [0] : NULL;
|
||||||
|
|
||||||
clang_translation_unit_ = clang_parseTranslationUnit(
|
clang_translation_unit_ = clang_parseTranslationUnit(
|
||||||
clang_index,
|
clang_index,
|
||||||
filename.c_str(),
|
filename.c_str(),
|
||||||
&pointer_flags[ 0 ],
|
&pointer_flags[ 0 ],
|
||||||
pointer_flags.size(),
|
pointer_flags.size(),
|
||||||
&cxunsaved_files[ 0 ],
|
const_cast<CXUnsavedFile *>(unsaved),
|
||||||
cxunsaved_files.size(),
|
cxunsaved_files.size(),
|
||||||
clang_defaultEditingTranslationUnitOptions() );
|
clang_defaultEditingTranslationUnitOptions() );
|
||||||
|
|
||||||
@ -154,7 +156,8 @@ std::vector< CompletionData > TranslationUnit::CandidatesForLocation(
|
|||||||
|
|
||||||
std::vector< CXUnsavedFile > cxunsaved_files =
|
std::vector< CXUnsavedFile > cxunsaved_files =
|
||||||
ToCXUnsavedFiles( unsaved_files );
|
ToCXUnsavedFiles( unsaved_files );
|
||||||
|
const CXUnsavedFile *unsaved = cxunsaved_files.size() > 0
|
||||||
|
? &cxunsaved_files [0] : NULL;
|
||||||
// codeCompleteAt reparses the TU if the underlying source file has changed on
|
// codeCompleteAt reparses the TU if the underlying source file has changed on
|
||||||
// disk since the last time the TU was updated and there are no unsaved files.
|
// disk since the last time the TU was updated and there are no unsaved files.
|
||||||
// If there are unsaved files, then codeCompleteAt will parse the in-memory
|
// If there are unsaved files, then codeCompleteAt will parse the in-memory
|
||||||
@ -170,7 +173,7 @@ std::vector< CompletionData > TranslationUnit::CandidatesForLocation(
|
|||||||
filename_.c_str(),
|
filename_.c_str(),
|
||||||
line,
|
line,
|
||||||
column,
|
column,
|
||||||
&cxunsaved_files[ 0 ],
|
const_cast<CXUnsavedFile *>(unsaved),
|
||||||
cxunsaved_files.size(),
|
cxunsaved_files.size(),
|
||||||
clang_defaultCodeCompleteOptions() ),
|
clang_defaultCodeCompleteOptions() ),
|
||||||
clang_disposeCodeCompleteResults );
|
clang_disposeCodeCompleteResults );
|
||||||
@ -249,10 +252,11 @@ void TranslationUnit::Reparse( std::vector< CXUnsavedFile > &unsaved_files,
|
|||||||
|
|
||||||
if ( !clang_translation_unit_ )
|
if ( !clang_translation_unit_ )
|
||||||
return;
|
return;
|
||||||
|
CXUnsavedFile *unsaved = unsaved_files.size() > 0
|
||||||
|
? &unsaved_files [0] : NULL;
|
||||||
failure = clang_reparseTranslationUnit( clang_translation_unit_,
|
failure = clang_reparseTranslationUnit( clang_translation_unit_,
|
||||||
unsaved_files.size(),
|
unsaved_files.size(),
|
||||||
&unsaved_files[ 0 ],
|
unsaved,
|
||||||
parse_options );
|
parse_options );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user