[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
patch submission: free memory on errors
From: |
Keith Reynolds |
Subject: |
patch submission: free memory on errors |
Date: |
Mon, 25 Jun 2001 20:49:54 -0700 |
I have a parser that builds a parse tree for later use, calling
malloc() to create the nodes of the tree as it goes. Unfortunately,
there is no way for me to provide a function that gets called when a
parse error is encountered, and no way for me to access bison's
internal value stack to free the memory.
So, I made the following changes to bison.simple: If a macro YYFREE
is defined, it is called with the current yylval when an error is
encountered, and with each element of the value stack as it unwinds
in search of a rule that handles the error token. In order to avoid
double YYFREE() calls, I had to NULL yylval after it gets added to
the value stack in a couple places.
This code is working quite well for my parser, but I'd be quite
willing to believe that there are other cases that are broken by
this; I'm much more of a networking programmer than a compiler
writer. All new code is under #ifdef YYFREE, so parsers that don't
define that should be unaffected. Comments and suggestions welcome.
Keith R.
PS: Thank you, whomever, for providing the BISON_SIMPLE environment
variable, so I can put the modified version into my source tree,
enabling the other developers on the project to compile the parser on
their machines without modifying bison's system files.
bison.simple.diffs
Description: Text document
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- patch submission: free memory on errors,
Keith Reynolds <=