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