[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Question about token stack
From: |
Akim Demaille |
Subject: |
Re: Question about token stack |
Date: |
Sun, 30 Aug 2020 15:43:54 +0200 |
Hi Ervin,
> Le 30 août 2020 à 11:44, Ervin Hegedüs <airween@gmail.com> a écrit :
>
> Hi all,
>
> and in parser:
>
> https://github.com/airween/flextest/blob/master/myparser.y#L52
>
> config_directive_line:
> T_CONFIG_DIRECTIVE T_CONFIG_DIRECTIVE_ARGUMENT { printf("'%s' '%s'\n",
> $1, $2); free($1); free($2); }
>
> This works as well, but I found some interesting thing when I
> analyzed my code with valgrind: the pushed token is still
> reachable when the parser run into an error.
>
> There is a wrong config: badconf.conf.
>
> Here is the result:
>
> valgrind -s --leak-check=full --show-leak-kinds=all --track-origins=yes
> ./myparser badconf.conf
>
> ==564114== 4 bytes in 1 blocks are still reachable in loss record 1 of 4
> ==564114== at 0x483677F: malloc (in
> /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==564114== by 0x48EB71A: strdup (strdup.c:42)
> ==564114== by 0x10B86A: push_sym (mylexer.l:111)
> ==564114== by 0x109E7F: yylex (mylexer.l:53)
> ==564114== by 0x10954B: yyparse (myparser.tab.c:1055)
> ==564114== by 0x10BD38: open_and_parse (mylexer.l:221)
> ==564114== by 0x10BF98: main (mylexer.l:272)
>
>
> How can I avoid this situation? Is that any "best-practice"? How
> can I access to pointers in stack to free them when error
> occurred?
I have not read all in details, but I believe you need to read
about %destructor.
https://www.gnu.org/software/bison/manual/html_node/Destructor-Decl.html
Cheers!
- Question about token stack, Ervin Hegedüs, 2020/08/30
- Re: Question about token stack,
Akim Demaille <=
- Re: Question about token stack, Ervin Hegedüs, 2020/08/30
- Re: Question about token stack, Akim Demaille, 2020/08/30
- Re: Question about token stack, Ervin Hegedüs, 2020/08/30
- Re: Question about token stack, Akim Demaille, 2020/08/30
- Re: Question about token stack, Ervin Hegedüs, 2020/08/30
- Re: Question about token stack, Akim Demaille, 2020/08/30
- Re: Question about token stack, Hegedüs Ervin, 2020/08/30