From d187074c82ab98269360592001b80a7def41b596 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net>
Date: Tue, 20 Jun 2000 17:56:02 -0700
Subject: [PATCH] bugfix for the 'fatal error in POP_STACK' bug

Rev: src/language.yacc:1.188
---
 src/language.yacc | 22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/src/language.yacc b/src/language.yacc
index ee7809fb03..dee2715663 100644
--- a/src/language.yacc
+++ b/src/language.yacc
@@ -109,7 +109,7 @@
 /* This is the grammar definition of Pike. */
 
 #include "global.h"
-RCSID("$Id: language.yacc,v 1.187 2000/06/09 19:00:47 mast Exp $");
+RCSID("$Id: language.yacc,v 1.188 2000/06/21 00:56:02 hubbe Exp $");
 #ifdef HAVE_MEMORY_H
 #include <memory.h>
 #endif
@@ -1624,8 +1624,14 @@ local_function: TOK_IDENTIFIER push_compiler_frame1 func_args
     {
       $$=copy_node(compiler_frame->variable[localid].def);
     }else{
-      $$ = mknode(F_ASSIGN, mktrampolinenode($<number>3),
-		mklocalnode(localid,0));
+      if(compiler_frame->lexical_scope & SCOPE_SCOPE_USED)
+      {
+	$$ = mknode(F_ASSIGN, mktrampolinenode($<number>3),
+		    mklocalnode(localid,0));
+      }else{
+	$$ = mknode(F_ASSIGN, mkidentifiernode($<number>3),
+		    mklocalnode(localid,0));
+      }
     }
   }
   | TOK_IDENTIFIER push_compiler_frame1 error
@@ -1737,8 +1743,14 @@ local_function2: optional_stars TOK_IDENTIFIER push_compiler_frame1 func_args
     {
       $$=copy_node(compiler_frame->variable[localid].def);
     }else{
-      $$ = mknode(F_ASSIGN, mktrampolinenode($<number>5),
-		mklocalnode(localid,0));
+      if(compiler_frame->lexical_scope & SCOPE_SCOPE_USED)
+      {
+        $$ = mknode(F_ASSIGN, mktrampolinenode($<number>5),
+	  mklocalnode(localid,0));
+      }else{
+        $$ = mknode(F_ASSIGN, mkidentifiernode($<number>5),
+	  mklocalnode(localid,0));
+      }
     }
   }
   | optional_stars TOK_IDENTIFIER push_compiler_frame1 error
-- 
GitLab