[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[8101] parsetexi valgrind fixes
From: |
gavinsmith0123 |
Subject: |
[8101] parsetexi valgrind fixes |
Date: |
Sat, 18 Aug 2018 04:56:53 -0400 (EDT) |
Revision: 8101
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8101
Author: gavin
Date: 2018-08-18 04:56:52 -0400 (Sat, 18 Aug 2018)
Log Message:
-----------
parsetexi valgrind fixes
Modified Paths:
--------------
trunk/tp/Texinfo/XS/parsetexi/api.c
trunk/tp/Texinfo/XS/parsetexi/input.c
trunk/tp/Texinfo/XS/parsetexi/main.c
trunk/tp/Texinfo/XS/parsetexi/parser.c
trunk/tp/Texinfo/XS/parsetexi/parser.h
trunk/tp/Texinfo/XS/parsetexi/tree.c
Modified: trunk/tp/Texinfo/XS/parsetexi/api.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/api.c 2018-08-17 10:06:53 UTC (rev 8100)
+++ trunk/tp/Texinfo/XS/parsetexi/api.c 2018-08-18 08:56:52 UTC (rev 8101)
@@ -46,6 +46,11 @@
reset_parser (void)
{
debug ("!!!!!!!!!!!!!!!! RESETTING THE PARSER !!!!!!!!!!!!!!!!!!!!!");
+ if (Root)
+ {
+ destroy_element_and_children (Root);
+ Root = 0;
+ }
wipe_user_commands ();
wipe_values ();
wipe_macros ();
@@ -70,7 +75,7 @@
parse_file (char *filename)
{
debug_output = 0;
- parse_texi_file (filename);
+ Root = parse_texi_file (filename);
}
ELEMENT *
Modified: trunk/tp/Texinfo/XS/parsetexi/input.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/input.c 2018-08-17 10:06:53 UTC (rev
8100)
+++ trunk/tp/Texinfo/XS/parsetexi/input.c 2018-08-18 08:56:52 UTC (rev
8101)
@@ -260,7 +260,7 @@
{
char *p = line, *q;
int line_no = 0;
- char *filename;
+ char *filename = 0;
if (current && current->parent && current->parent->cmd == CM_verb)
return 0;
Modified: trunk/tp/Texinfo/XS/parsetexi/main.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/main.c 2018-08-17 10:06:53 UTC (rev
8100)
+++ trunk/tp/Texinfo/XS/parsetexi/main.c 2018-08-18 08:56:52 UTC (rev
8101)
@@ -26,6 +26,7 @@
main (int argc, char **argv)
{
//extern int element_counter;
+ ELEMENT *root;
debug_output = 1;
if (argc <= 1)
@@ -34,8 +35,8 @@
exit (1);
}
reset_parser ();
- parse_texi_file (argv[1]);
- dump_tree_to_perl (Root);
+ root = parse_texi_file (argv[1]);
+ dump_tree_to_perl (root);
//build_texinfo_tree ();
/* ^ doesn't work because there's no active perl instance */
//printf ("About %d elements in tree\n", element_counter);
Modified: trunk/tp/Texinfo/XS/parsetexi/parser.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.c 2018-08-17 10:06:53 UTC (rev
8100)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.c 2018-08-18 08:56:52 UTC (rev
8101)
@@ -134,7 +134,7 @@
/* 835 */
-void
+ELEMENT *
parse_texi_file (char *filename)
{
char *p, *q;
@@ -205,7 +205,7 @@
if (preamble)
add_to_element_contents (root, preamble);
- Root = parse_texi (root);
+ return parse_texi (root);
} /* 916 */
Modified: trunk/tp/Texinfo/XS/parsetexi/parser.h
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.h 2018-08-17 10:06:53 UTC (rev
8100)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.h 2018-08-18 08:56:52 UTC (rev
8101)
@@ -53,7 +53,7 @@
void push_conditional_stack (enum command_id cond);
enum command_id pop_conditional_stack (void);
extern size_t conditional_number;
-void parse_texi_file (char *filename);
+ELEMENT *parse_texi_file (char *filename);
int abort_empty_line (ELEMENT **current_inout, char *additional);
ELEMENT *end_paragraph (ELEMENT *current,
enum command_id closed_command,
Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-08-17 10:06:53 UTC (rev
8100)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-08-18 08:56:52 UTC (rev
8101)
@@ -49,6 +49,7 @@
void
destroy_element (ELEMENT *e)
{
+ int i;
free (e->text.text);
/* Note the pointers in these lists are not themselves freed. */
@@ -55,13 +56,21 @@
free (e->contents.list);
free (e->args.list);
- /* FIXME destroy extra values as well? */
+ for (i = 0; i < e->extra_number; i++)
+ {
+ switch (e->extra[i].type)
+ {
+ default:
+ /* TODO: need to check if the element is in the main tree or not. */
+ break;
+ }
+ }
+ free (e->extra);
free (e);
}
-/* Recursively destroy this element and all data in its descendants.
- TODO: Also extra information. */
+/* Recursively destroy this element and all data in its descendants. */
void
destroy_element_and_children (ELEMENT *e)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [8101] parsetexi valgrind fixes,
gavinsmith0123 <=