diff src/input.cc @ 1288:4acabfbdd381

[project @ 1995-04-28 20:23:04 by jwe]
author jwe
date Fri, 28 Apr 1995 20:31:13 +0000
parents b01f9577b0da
children 611d403c7f3d
line wrap: on
line diff
--- a/src/input.cc
+++ b/src/input.cc
@@ -460,7 +460,6 @@
     }
 }
 
-
 // Use GNU readline to get an input line and store it in the history
 // list.
 
@@ -638,6 +637,8 @@
 {
   char **names = 0;
 
+  assert (text);
+
   char *id = strsave (text);
   char *ptr = strchr (id, '.');
   *ptr = '\0';
@@ -653,6 +654,7 @@
   ptr = strrchr (prefix, '.');
   *ptr = '\0';
 
+  delete [] hint;
   hint = strsave (ptr + 1);
 
   symbol_record *sr = curr_sym_tab->lookup (id, 0, 0);
@@ -703,15 +705,9 @@
   if (text && *text && *text != '.')
     {
       if (strrchr (text, '.'))
-	{
-	  names = generate_struct_completions (text, prefix, hint);
-	}
+	names = generate_struct_completions (text, prefix, hint);
       else
-	{
-	  hint = strsave (text);
-
-	  names = make_name_list ();
-	}
+	names = make_name_list ();
     }
 
   return names;
@@ -722,6 +718,8 @@
 {
   int retval = 0;
 
+  assert (nm);
+
   char *id = strsave (nm);
   char *elts = 0;
   char *ptr = strchr (id, '.');
@@ -795,17 +793,16 @@
       prefix = 0;
 
       delete [] hint;
-      prefix = 0;
+      hint = strsave (text);
 
       name_list = generate_possible_completions (text, prefix, hint);
 
       prefix_len = 0;
       if (prefix)
-	prefix_len = strlen (prefix) + 1;
+	prefix_len = strlen (prefix);
 	
-      hint_len = 0;
-      if (hint)
-	hint_len = strlen (hint);
+      assert (hint);
+      hint_len = strlen (hint);
 
       matches = 0;
       if (name_list)
@@ -825,8 +822,8 @@
 	  list_index++;
 	  if (strncmp (name, hint, hint_len) == 0)
 	    {
-	      int len = 3 + prefix_len + strlen (name);
-	      char *buf = xmalloc (len);
+	      int len = 2 + prefix_len + strlen (name);
+	      char *buf = (char *) xmalloc (len);
 
 	      if (prefix)
 		{