texinfo-commits
[Top][All Lists]
Advanced

[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)
 {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]