* win32-nat.c (psapi_module_handle): Remove static.
[deliverable/binutils-gdb.git] / gdb / completer.c
index 136eeb703617242bddd7143e635dae1c5480c621..7005a5dc0343423fd05abbc72dbf4201974b71a6 100644 (file)
@@ -5,7 +5,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -14,9 +14,7 @@
    GNU General Public License for more details.
 
    You should have received a copy of the GNU General Public License
-   along with this program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.  */
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
 #include "symtab.h"
@@ -129,7 +127,7 @@ filename_completer (char *text, char *word)
   subsequent_name = 0;
   while (1)
     {
-      char *p;
+      char *p, *q;
       p = rl_filename_completion_function (text, subsequent_name);
       if (return_val_used >= return_val_alloced)
        {
@@ -151,38 +149,38 @@ filename_completer (char *text, char *word)
       /* Like emacs, don't complete on old versions.  Especially useful
          in the "source" command.  */
       if (p[strlen (p) - 1] == '~')
-       continue;
+       {
+         xfree (p);
+         continue;
+       }
 
-      {
-       char *q;
-       if (word == text)
-         /* Return exactly p.  */
-         return_val[return_val_used++] = p;
-       else if (word > text)
-         {
-           /* Return some portion of p.  */
-           q = xmalloc (strlen (p) + 5);
-           strcpy (q, p + (word - text));
-           return_val[return_val_used++] = q;
-           xfree (p);
-         }
-       else
-         {
-           /* Return some of TEXT plus p.  */
-           q = xmalloc (strlen (p) + (text - word) + 5);
-           strncpy (q, word, text - word);
-           q[text - word] = '\0';
-           strcat (q, p);
-           return_val[return_val_used++] = q;
-           xfree (p);
-         }
-      }
+      if (word == text)
+       /* Return exactly p.  */
+       return_val[return_val_used++] = p;
+      else if (word > text)
+       {
+         /* Return some portion of p.  */
+         q = xmalloc (strlen (p) + 5);
+         strcpy (q, p + (word - text));
+         return_val[return_val_used++] = q;
+         xfree (p);
+       }
+      else
+       {
+         /* Return some of TEXT plus p.  */
+         q = xmalloc (strlen (p) + (text - word) + 5);
+         strncpy (q, word, text - word);
+         q[text - word] = '\0';
+         strcat (q, p);
+         return_val[return_val_used++] = q;
+         xfree (p);
+       }
     }
 #if 0
   /* There is no way to do this just long enough to affect quote inserting
      without also affecting the next completion.  This should be fixed in
      readline.  FIXME.  */
-  /* Insure that readline does the right thing
+  /* Ensure that readline does the right thing
      with respect to inserting quotes.  */
   rl_completer_word_break_characters = "";
 #endif
@@ -281,7 +279,8 @@ location_completer (char *text, char *word)
       list = make_symbol_completion_list (symbol_start, word);
       /* If text includes characters which cannot appear in a file
         name, they cannot be asking for completion on files.  */
-      if (strcspn (text, gdb_completer_file_name_break_characters) == text_len)
+      if (strcspn (text, 
+                  gdb_completer_file_name_break_characters) == text_len)
        fn_list = make_source_files_completion_list (text, text);
     }
 
@@ -331,7 +330,10 @@ location_completer (char *text, char *word)
       /* No completions at all.  As the final resort, try completing
         on the entire text as a symbol.  */
       list = make_symbol_completion_list (orig_text, word);
+      xfree (fn_list);
     }
+  else
+    xfree (fn_list);
 
   return list;
 }
@@ -461,7 +463,7 @@ complete_line (const char *text, char *line_buffer, int point)
            {
              list = complete_on_cmdlist (cmdlist, p, word);
            }
-         /* Insure that readline does the right thing with respect to
+         /* Ensure that readline does the right thing with respect to
             inserting quotes.  */
          rl_completer_word_break_characters =
            gdb_completer_command_word_break_characters;
@@ -485,7 +487,7 @@ complete_line (const char *text, char *line_buffer, int point)
                     a subcommand (e.g. "info ").  */
                  list = complete_on_cmdlist (*c->prefixlist, p, word);
 
-                 /* Insure that readline does the right thing
+                 /* Ensure that readline does the right thing
                     with respect to inserting quotes.  */
                  rl_completer_word_break_characters =
                    gdb_completer_command_word_break_characters;
@@ -551,7 +553,7 @@ complete_line (const char *text, char *line_buffer, int point)
 
              list = complete_on_cmdlist (result_list, q, word);
 
-             /* Insure that readline does the right thing
+             /* Ensure that readline does the right thing
                 with respect to inserting quotes.  */
              rl_completer_word_break_characters =
                gdb_completer_command_word_break_characters;
This page took 0.035039 seconds and 4 git commands to generate.