aboutsummaryrefslogtreecommitdiff
path: root/gdb/source.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/source.c')
-rw-r--r--gdb/source.c26
1 files changed, 12 insertions, 14 deletions
diff --git a/gdb/source.c b/gdb/source.c
index e0050f1..066666c 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -129,7 +129,7 @@ static int first_line_listed;
Used to prevent repeating annoying "No such file or directories" msgs. */
static struct symtab *last_source_visited = NULL;
-static int last_source_error = 0;
+static bool last_source_error = false;
/* Return the first line listed by print_source_lines.
Used by command interpreters to request listing from
@@ -1129,8 +1129,7 @@ static void
print_source_lines_base (struct symtab *s, int line, int stopline,
print_source_lines_flags flags)
{
- scoped_fd desc;
- int noprint = 0;
+ bool noprint = false;
int nlines = stopline - line;
struct ui_out *uiout = current_uiout;
@@ -1144,26 +1143,27 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
if (uiout->test_flags (ui_source_list))
{
/* Only prints "No such file or directory" once. */
- if ((s != last_source_visited) || (!last_source_error))
+ if (s == last_source_visited)
{
- last_source_visited = s;
- desc = open_source_file (s);
- if (desc.get () < 0)
+ if (last_source_error)
{
- last_source_error = desc.get ();
- noprint = 1;
+ flags |= PRINT_SOURCE_LINES_NOERROR;
+ noprint = true;
}
}
else
{
- flags |= PRINT_SOURCE_LINES_NOERROR;
- noprint = 1;
+ last_source_visited = s;
+ scoped_fd desc = open_source_file (s);
+ last_source_error = desc.get () < 0;
+ if (last_source_error)
+ noprint = true;
}
}
else
{
flags |= PRINT_SOURCE_LINES_NOERROR;
- noprint = 1;
+ noprint = true;
}
if (noprint)
@@ -1209,8 +1209,6 @@ print_source_lines_base (struct symtab *s, int line, int stopline,
return;
}
- last_source_error = 0;
-
/* If the user requested a sequence of lines that seems to go backward
(from high to low line numbers) then we don't print anything. */
if (stopline <= line)