diff --git a/src/language.yacc b/src/language.yacc
index 0ccc0def67991c1d3649d06bc82f3b94078d40eb..99d596f642035a1d12445e9c8a8d062c8b66442f 100644
--- a/src/language.yacc
+++ b/src/language.yacc
@@ -156,7 +156,7 @@
 /* This is the grammar definition of Pike. */
 
 #include "global.h"
-RCSID("$Id: language.yacc,v 1.25 1997/02/18 05:13:34 hubbe Exp $");
+RCSID("$Id: language.yacc,v 1.26 1997/03/01 02:37:01 hubbe Exp $");
 #ifdef HAVE_MEMORY_H
 #include <memory.h>
 #endif
@@ -1130,9 +1130,9 @@ idents: low_idents
   {
     $$=index_node($1, $3);
     free_node($1);
-    free_string($3);
-    free_string(last_identifier);
+    if(last_identifier) free_string(last_identifier);
     copy_shared_string(last_identifier, $3);
+    free_string($3);
   }
   ;
 
diff --git a/src/las.c b/src/las.c
index b77a10cd87edec3f806ba6962508787cf07a3ae1..4f04ed18e0cd108a8dcafe38608438038be5ed5c 100644
--- a/src/las.c
+++ b/src/las.c
@@ -4,7 +4,7 @@
 ||| See the files COPYING and DISCLAIMER for more information.
 \*/
 #include "global.h"
-RCSID("$Id: las.c,v 1.27 1997/02/27 11:23:22 hubbe Exp $");
+RCSID("$Id: las.c,v 1.28 1997/03/01 02:37:03 hubbe Exp $");
 
 #include "language.h"
 #include "interpret.h"
@@ -508,6 +508,8 @@ node *index_node(node *n, struct pike_string * id)
     case T_STRING:
     case T_ARRAY:
       yyerror("Failed to index module (Not a module?)");
+      pop_stack();
+      push_int(0);
       break;
 
     default: