gdb/
[binutils-gdb.git] / gdb / source.c
index cad01608a664dfa15c8919d0187a38ffc94602a5..3e896726a04aec0b9d90762d6c913e8be075d10d 100644 (file)
@@ -267,6 +267,7 @@ select_source_symtab (struct symtab *s)
        {
          const char *name = s->filename;
          int len = strlen (name);
+
          if (!(len > 2 && (strcmp (&name[len - 2], ".h") == 0
              || strcmp (name, "<<C++-namespaces>>") == 0)))
            {
@@ -519,6 +520,7 @@ add_path (char *dirname, char **which_path, int parse_separators)
          if (stat (name, &st) < 0)
            {
              int save_errno = errno;
+
              fprintf_unfiltered (gdb_stderr, "Warning: ");
              print_sys_errmsg (name, save_errno);
            }
@@ -813,6 +815,7 @@ done:
                            IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
                            ? "" : SLASH_STRING,
                            filename, (char *)NULL);
+
          *filename_opened = xfullpath (f);
          xfree (f);
        }
@@ -1290,6 +1293,7 @@ print_source_lines_base (struct symtab *s, int line, int stopline, int noerror)
 {
   int c;
   int desc;
+  int noprint = 0;
   FILE *stream;
   int nlines = stopline - line;
   struct cleanup *cleanup;
@@ -1316,11 +1320,12 @@ print_source_lines_base (struct symtab *s, int line, int stopline, int noerror)
     }
   else
     {
-      desc = -1;
+      desc = last_source_error;
       noerror = 1;
+      noprint = 1;
     }
 
-  if (desc < 0)
+  if (desc < 0 || noprint)
     {
       last_source_error = desc;
 
@@ -1910,6 +1915,7 @@ void
 _initialize_source (void)
 {
   struct cmd_list_element *c;
+
   current_source_symtab = 0;
   init_source_path ();