/* Cache of styled source file text
- Copyright (C) 2018-2019 Free Software Foundation, Inc.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
This file is part of GDB.
conditional compilation in source-cache.h. */
static srchilite::SourceHighlight *highlighter;
- if (highlighter == nullptr)
- {
- highlighter = new srchilite::SourceHighlight ("esc.outlang");
- highlighter->setStyleFile ("esc.style");
- }
-
try
{
+ if (highlighter == nullptr)
+ {
+ highlighter = new srchilite::SourceHighlight ("esc.outlang");
+ highlighter->setStyleFile ("esc.style");
+ }
+
std::istringstream input (contents);
std::ostringstream output;
highlighter->highlight (input, output, lang_name, fullname);
source_cache::get_line_charpos (struct symtab *s,
const std::vector<off_t> **offsets)
{
- std::string fullname = symtab_to_fullname (s);
+ try
+ {
+ std::string fullname = symtab_to_fullname (s);
- auto iter = m_offset_cache.find (fullname);
- if (iter == m_offset_cache.end ())
+ auto iter = m_offset_cache.find (fullname);
+ if (iter == m_offset_cache.end ())
+ {
+ ensure (s);
+ iter = m_offset_cache.find (fullname);
+ /* cache_source_text ensured this was entered. */
+ gdb_assert (iter != m_offset_cache.end ());
+ }
+
+ *offsets = &iter->second;
+ return true;
+ }
+ catch (const gdb_exception_error &e)
{
- ensure (s);
- iter = m_offset_cache.find (fullname);
- /* cache_source_text ensured this was entered. */
- gdb_assert (iter != m_offset_cache.end ());
+ return false;
}
-
- *offsets = &iter->second;
- return true;
}
/* A helper function that extracts the desired source lines from TEXT,