texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[8098] parsetexi fix some memory leaks


From: gavinsmith0123
Subject: [8098] parsetexi fix some memory leaks
Date: Thu, 16 Aug 2018 14:05:23 -0400 (EDT)

Revision: 8098
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8098
Author:   gavin
Date:     2018-08-16 14:05:23 -0400 (Thu, 16 Aug 2018)
Log Message:
-----------
parsetexi fix some memory leaks

Modified Paths:
--------------
    trunk/tp/Texinfo/XS/parsetexi/errors.c
    trunk/tp/Texinfo/XS/parsetexi/parser.c
    trunk/tp/Texinfo/XS/parsetexi/separator.c
    trunk/tp/Texinfo/XS/parsetexi/text.c

Modified: trunk/tp/Texinfo/XS/parsetexi/errors.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/errors.c      2018-08-16 16:24:40 UTC (rev 
8097)
+++ trunk/tp/Texinfo/XS/parsetexi/errors.c      2018-08-16 18:05:23 UTC (rev 
8098)
@@ -110,6 +110,9 @@
 void
 wipe_errors (void)
 {
+  int i;
+  for (i = 0; i < error_number; i++)
+    free (error_list[i].message);
   error_number = 0;
 }
 
@@ -117,9 +120,9 @@
 dump_errors (void)
 {
   int i;
-  TEXT t;
+  static TEXT t;
   
-  text_init (&t);
+  text_reset (&t);
   text_append (&t, "$ERRORS = [\n");
   for (i = 0; i < error_number; i++)
     {

Modified: trunk/tp/Texinfo/XS/parsetexi/parser.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.c      2018-08-16 16:24:40 UTC (rev 
8097)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.c      2018-08-16 18:05:23 UTC (rev 
8098)
@@ -498,8 +498,7 @@
       else if (last_child->type == ET_empty_spaces_before_argument)
         {
           /* Remove element from main tree. */
-          pop_element_from_contents (current);
-          /* FIXME: destroy_element? */
+          ELEMENT *e = pop_element_from_contents (current);
           
           if (owning_keypair)
             {
@@ -511,6 +510,8 @@
               owning_keypair->value = 0;
               owning_keypair->type = extra_deleted;
             }
+          e->text.text = 0;
+          destroy_element (e);
         }
       retval = 1;
     }

Modified: trunk/tp/Texinfo/XS/parsetexi/separator.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/separator.c   2018-08-16 16:24:40 UTC (rev 
8097)
+++ trunk/tp/Texinfo/XS/parsetexi/separator.c   2018-08-16 18:05:23 UTC (rev 
8098)
@@ -237,6 +237,7 @@
           && last_contents_child(current)->type
                == ET_empty_spaces_before_argument)
         {
+          /* FIXME: Is this right? */
           remove_from_contents (current, 0);
         }
     }

Modified: trunk/tp/Texinfo/XS/parsetexi/text.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/text.c        2018-08-16 16:24:40 UTC (rev 
8097)
+++ trunk/tp/Texinfo/XS/parsetexi/text.c        2018-08-16 18:05:23 UTC (rev 
8098)
@@ -70,6 +70,16 @@
 }
 
 void
+text_reset (TEXT *t)
+{
+  if (t->end > 0)
+    {
+      t->end = 0;
+      t->text[0] = 0;
+    }
+}
+
+void
 text_init (TEXT *t)
 {
   t->end = t->space = 0;




reply via email to

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