mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-19 17:23:02 +00:00
fix a memory leak
* src/print-xml.c (num_escape_bufs): New. (print_xml): Be sure to release all the escape_bufs.
This commit is contained in:
@@ -45,7 +45,8 @@ struct escape_buf
|
|||||||
char *ptr;
|
char *ptr;
|
||||||
size_t size;
|
size_t size;
|
||||||
};
|
};
|
||||||
static struct escape_buf escape_bufs[3];
|
enum { num_escape_bufs = 3 };
|
||||||
|
static struct escape_buf escape_bufs[num_escape_bufs];
|
||||||
|
|
||||||
|
|
||||||
/*--------------------------------.
|
/*--------------------------------.
|
||||||
@@ -496,7 +497,6 @@ xml_escape (char const *str)
|
|||||||
void
|
void
|
||||||
print_xml (void)
|
print_xml (void)
|
||||||
{
|
{
|
||||||
state_number i;
|
|
||||||
int level = 0;
|
int level = 0;
|
||||||
|
|
||||||
FILE *out = xfopen (spec_xml_file, "w");
|
FILE *out = xfopen (spec_xml_file, "w");
|
||||||
@@ -522,8 +522,11 @@ print_xml (void)
|
|||||||
/* print automaton */
|
/* print automaton */
|
||||||
fputc ('\n', out);
|
fputc ('\n', out);
|
||||||
xml_puts (out, level + 1, "<automaton>");
|
xml_puts (out, level + 1, "<automaton>");
|
||||||
for (i = 0; i < nstates; i++)
|
{
|
||||||
print_state (out, level + 2, states[i]);
|
state_number i;
|
||||||
|
for (i = 0; i < nstates; i++)
|
||||||
|
print_state (out, level + 2, states[i]);
|
||||||
|
}
|
||||||
xml_puts (out, level + 1, "</automaton>");
|
xml_puts (out, level + 1, "</automaton>");
|
||||||
|
|
||||||
bitset_free (no_reduce_set);
|
bitset_free (no_reduce_set);
|
||||||
@@ -531,8 +534,11 @@ print_xml (void)
|
|||||||
|
|
||||||
xml_puts (out, 0, "</bison-xml-report>");
|
xml_puts (out, 0, "</bison-xml-report>");
|
||||||
|
|
||||||
free (escape_bufs[0].ptr);
|
{
|
||||||
free (escape_bufs[1].ptr);
|
int i;
|
||||||
|
for (i = 0; i < num_escape_bufs; ++i)
|
||||||
|
free (escape_bufs[i].ptr);
|
||||||
|
}
|
||||||
|
|
||||||
xfclose (out);
|
xfclose (out);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user