texinfo-commits
[Top][All Lists]
Advanced

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

[8107] parsetexi free extra contents array


From: gavinsmith0123
Subject: [8107] parsetexi free extra contents array
Date: Sat, 18 Aug 2018 12:40:38 -0400 (EDT)

Revision: 8107
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8107
Author:   gavin
Date:     2018-08-18 12:40:37 -0400 (Sat, 18 Aug 2018)
Log Message:
-----------
parsetexi free extra contents array

Modified Paths:
--------------
    trunk/tp/Texinfo/XS/parsetexi/separator.c
    trunk/tp/Texinfo/XS/parsetexi/tree.c

Modified: trunk/tp/Texinfo/XS/parsetexi/separator.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/separator.c   2018-08-18 15:30:58 UTC (rev 
8106)
+++ trunk/tp/Texinfo/XS/parsetexi/separator.c   2018-08-18 16:40:37 UTC (rev 
8107)
@@ -29,6 +29,8 @@
 /* Add the contents of CURRENT as an element to the extra value with
    key KEY, except that some "empty space" elements are removed.  Used for
    'block_command_line_contents' for the arguments to a block line command.
+TODO: This function should go away once we make the same change for
+"block commands" as were made for "brace commands".
    */
 void
 register_command_arg (ELEMENT *current, char *key)
@@ -650,13 +652,22 @@
   while (k->value->contents.number > 0
          && !last_contents_child(k->value)) // ->contents.number == 0)
     {
-      ELEMENT *popped = pop_element_from_contents (k->value);
-      if (popped)
-        destroy_element (popped);
+      ELEMENT *array = pop_element_from_contents (k->value);
+      if (array)
+        {
+          int j;
+          for (j = 0 ; j < array->contents.number; j++)
+            {
+              if (array->contents.list[j])
+                destroy_element (array->contents.list[j]);
+            }
+          destroy_element (array);
+        }
     }
 
   if (k->value->contents.number == 0)
     {
+      destroy_element (k->value);
       k->key = "";
       k->type = extra_deleted;
     }

Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c        2018-08-18 15:30:58 UTC (rev 
8106)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c        2018-08-18 16:40:37 UTC (rev 
8107)
@@ -85,8 +85,17 @@
             destroy_element ((ELEMENT *) e->extra[i].value);
           break;
         case extra_element_contents_array:
-          /* TODO */
+          {
+            int j;
+            ELEMENT *array = e->extra[i].value;
+            for (j = 0 ; j < array->contents.number; j++)
+              {
+                if (array->contents.list[j])
+                  destroy_element (array->contents.list[j]);
+              }
+            destroy_element (array);
           break;
+          }
         case extra_node_spec:
             {
               NODE_SPEC_EXTRA *nse = (NODE_SPEC_EXTRA *) e->extra[i].value;




reply via email to

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