Fix crash when trying to open unavailable source file.

This commit is contained in:
Bartosz Taudul 2020-08-12 19:05:02 +02:00
parent ce1c744de9
commit 8e9a701277
2 changed files with 45 additions and 28 deletions

View File

@ -415,6 +415,11 @@ void SourceView::OpenSymbol( const char* fileName, int line, uint64_t baseAddr,
Disassemble( baseAddr, worker );
SelectLine( line, &worker, true, symAddr );
SelectViewMode();
}
void SourceView::SelectViewMode()
{
if( !m_lines.empty() )
{
if( !m_asm.empty() )
@ -453,7 +458,8 @@ void SourceView::ParseSource( const char* fileName, const Worker& worker, const
else
{
FILE* f = fopen( view.SourceSubstitution( fileName ), "rb" );
assert( f );
if( f )
{
fseek( f, 0, SEEK_END );
sz = ftell( f );
fseek( f, 0, SEEK_SET );
@ -467,7 +473,14 @@ void SourceView::ParseSource( const char* fileName, const Worker& worker, const
m_data = m_dataBuf;
fclose( f );
}
else
{
m_file = nullptr;
}
}
if( m_file )
{
m_tokenizer.Reset();
auto txt = m_data;
for(;;)
@ -491,6 +504,7 @@ void SourceView::ParseSource( const char* fileName, const Worker& worker, const
}
}
}
}
static bool IsJumpConditionalX86( const char* op )
{
@ -1093,6 +1107,7 @@ void SourceView::RenderSymbolView( const Worker& worker, View& view )
ParseSource( file, worker, view );
m_targetLine = line;
SelectLine( line, &worker, true );
SelectViewMode();
}
ImGui::PopID();
ImGui::NextColumn();
@ -2552,7 +2567,7 @@ void SourceView::RenderAsmLine( AsmLine& line, uint32_t ipcnt, uint32_t iptotal,
ParseSource( fileName, worker, view );
m_targetLine = srcline;
SelectLine( srcline, &worker, false );
m_displayMode = DisplayMixed;
SelectViewMode();
}
else
{

View File

@ -145,6 +145,8 @@ private:
void ParseSource( const char* fileName, const Worker& worker, const View& view );
bool Disassemble( uint64_t symAddr, const Worker& worker );
void SelectViewMode();
void RenderSimpleSourceView();
void RenderSymbolView( const Worker& worker, View& view );