Check token type before trying to match tokid. Fixes PR 12923.
[pspp] / src / file-handle.q
index 5c48007912c84029b09e0973ef3575750b1746d1..688fbb89b509b1af790611cb52853525d5ba9fcd 100644 (file)
@@ -14,8 +14,8 @@
 
    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., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
 
 #include <config.h>
 #include "file-handle.h"
@@ -73,7 +73,7 @@ get_handle_with_name (const char *handle_name)
   struct file_handle *iter;
 
   for (iter = file_handles; iter != NULL; iter = iter->next)
-    if (!strcmp (handle_name, iter->name))
+    if (!strcasecmp (handle_name, iter->name))
       return iter;
   return NULL;
 }
@@ -109,22 +109,21 @@ get_handle_for_filename (const char *filename)
 int
 cmd_file_handle (void)
 {
-  char handle_name[9];
+  char handle_name[LONG_NAME_LEN + 1];
 
   struct cmd_file_handle cmd;
   struct file_handle *handle;
 
   if (!lex_force_id ())
     return CMD_FAILURE;
-  strcpy (handle_name, tokid);
+  st_trim_copy (handle_name, tokid, sizeof handle_name);
 
   handle = get_handle_with_name (handle_name);
   if (handle != NULL)
     {
-      msg (SE, _("File handle %s already refers to "
-                "file %s.  File handle cannot be redefined within a "
-                 "session."),
-          tokid, handle->filename);
+      msg (SE, _("File handle %s already refers to file %s.  "
+                 "File handles cannot be redefined within a session."),
+          handle_name, handle->filename);
       return CMD_FAILURE;
     }
 
@@ -421,10 +420,11 @@ fh_init(void)
 void 
 fh_done(void)
 {
-  assert(handle_list);
-  
-  ll_destroy(handle_list);
-  handle_list = 0;
+  if ( handle_list )  
+  {
+    ll_destroy(handle_list);
+    handle_list = 0;
+  }
 }