From e73daeecc59cd491e3836f4ebc26fb77db433d3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20H=C3=BCbinette=20=28Hubbe=29?= <hubbe@hubbe.net> Date: Fri, 17 Apr 1998 10:13:37 -0700 Subject: [PATCH] 'freeing string twice' bug fixed Rev: src/language.yacc:1.82 --- src/language.yacc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/language.yacc b/src/language.yacc index 6462e35671..9ec5ed70a9 100644 --- a/src/language.yacc +++ b/src/language.yacc @@ -171,7 +171,7 @@ /* This is the grammar definition of Pike. */ #include "global.h" -RCSID("$Id: language.yacc,v 1.81 1998/04/17 03:18:09 grubba Exp $"); +RCSID("$Id: language.yacc,v 1.82 1998/04/17 17:13:37 hubbe Exp $"); #ifdef HAVE_MEMORY_H #include <memory.h> #endif @@ -940,6 +940,7 @@ new_local_name: optional_stars F_IDENTIFIER new_local_name2: F_IDENTIFIER { + add_ref($<n>0->u.sval.u.string); add_local_name($1->u.sval.u.string, $<n>0->u.sval.u.string); $$=mknode(F_ASSIGN,mkintnode(0),mklocalnode(islocal($1->u.sval.u.string))); free_node($1); @@ -947,6 +948,7 @@ new_local_name2: F_IDENTIFIER | bad_identifier { $$=mkintnode(0); } | F_IDENTIFIER '=' safe_expr0 { + add_ref($<n>0->u.sval.u.string); add_local_name($1->u.sval.u.string, $<n>0->u.sval.u.string); $$=mknode(F_ASSIGN,$3, mklocalnode(islocal($1->u.sval.u.string))); free_node($1); @@ -1849,6 +1851,7 @@ void yyerror(char *str) } /* argument must be a shared string */ +/* Note that this function eats a reference to 'type' */ void add_local_name(struct pike_string *str, struct pike_string *type) { -- GitLab