texinfo-commits
[Top][All Lists]
Advanced

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

[8297] parsetexi free extra_node_spec_array


From: gavinsmith0123
Subject: [8297] parsetexi free extra_node_spec_array
Date: Wed, 17 Oct 2018 05:36:09 -0400 (EDT)

Revision: 8297
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8297
Author:   gavin
Date:     2018-10-17 05:36:09 -0400 (Wed, 17 Oct 2018)
Log Message:
-----------
parsetexi free extra_node_spec_array

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

Modified: trunk/tp/Texinfo/XS/parsetexi/end_line.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/end_line.c    2018-10-16 22:14:32 UTC (rev 
8296)
+++ trunk/tp/Texinfo/XS/parsetexi/end_line.c    2018-10-17 09:36:09 UTC (rev 
8297)
@@ -1751,9 +1751,24 @@
 
       if (nodes_manuals[0])
         {
-          add_extra_contents (current, "node_content",
-                              nodes_manuals[0]->node_content);
-          register_label (current, nodes_manuals[0]->node_content);
+          ELEMENT *label = 0;
+          if (nodes_manuals[0]->node_content)
+            {
+              /* Copy the first 'node_content' array, to avoid the complication
+                 of it being referenced in two different places.
+                 This might be better with a separate function. */
+
+              label = new_element (0);
+              int i;
+
+              for (i = 0; i<nodes_manuals[0]->node_content->contents.number;
+                   i++)
+                {
+                  add_to_contents_as_array (label,
+                   contents_child_by_index(nodes_manuals[0]->node_content, i));
+                }
+            }
+          register_label (current, label);
         }
 
       current_node = current;

Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c        2018-10-16 22:14:32 UTC (rev 
8296)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c        2018-10-17 09:36:09 UTC (rev 
8297)
@@ -99,6 +99,23 @@
               free (nse);
               break;
             }
+        case extra_node_spec_array:
+            {
+              NODE_SPEC_EXTRA **array = (NODE_SPEC_EXTRA **) e->extra[i].value;
+              NODE_SPEC_EXTRA **nse;
+
+              for (nse = array; (*nse); nse++)
+                {
+                  if ((*nse)->manual_content)
+                    destroy_element ((*nse)->manual_content);
+                  if ((*nse)->node_content)
+                    destroy_element ((*nse)->node_content);
+                  free (*nse);
+                  /* FIXME: same problem as above */
+                }
+              free (array);
+              break;
+            }
         case extra_float_type:
           {
             EXTRA_FLOAT_TYPE *eft = (EXTRA_FLOAT_TYPE *) e->extra[i].value;




reply via email to

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