texinfo-commits
[Top][All Lists]
Advanced

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

[no subject]


From: Patrice Dumas
Date: Sun, 29 Sep 2024 06:16:29 -0400 (EDT)

branch: master
commit c95d4885bc16e86e8312d0f0fd6d43350f59fbe8
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Mon Jun 17 00:00:56 2024 +0200

    * tp/Texinfo/XS/main/document.c
    (destroy_document_information_except_tree),
    tp/Texinfo/XS/main/output_unit.c (destroy_output_unit)
    (free_output_unit_list, free_output_units_lists): free output units.
---
 ChangeLog                        |  7 +++++++
 tp/Texinfo/OutputUnits.pm        |  1 +
 tp/Texinfo/XS/main/document.c    |  4 ++++
 tp/Texinfo/XS/main/output_unit.c | 37 +++++++++++++++++++++++++++++++++++++
 tp/Texinfo/XS/main/output_unit.h |  1 +
 5 files changed, 50 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index bbb2681446..c620218015 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,13 @@
        * tp/Texinfo/XS/convert/convert_html.c (html_command_description):
        update for move of cmd to CONTAINER.
 
+2024-06-16  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/main/document.c
+       (destroy_document_information_except_tree),
+       tp/Texinfo/XS/main/output_unit.c (destroy_output_unit)
+       (free_output_unit_list, free_output_units_lists): free output units.
+
 2024-06-16  Patrice Dumas  <pertusus@free.fr>
 
        Associate output units lists with document in XS
diff --git a/tp/Texinfo/OutputUnits.pm b/tp/Texinfo/OutputUnits.pm
index cd1f991015..07ba5f4cc6 100644
--- a/tp/Texinfo/OutputUnits.pm
+++ b/tp/Texinfo/OutputUnits.pm
@@ -74,6 +74,7 @@ my %XS_convert_overrides = (
   #    => "Texinfo::StructTransfXS::split_by_node");
   #  "Texinfo::OutputUnits::split_by_section"
   #    => "Texinfo::StructTransfXS::split_by_section");
+  # TODO the split_pages XS takes also a document as argument
   #  "Texinfo::OutputUnits::split_pages"
   #    => "Texinfo::StructTransfXS::split_pages"
 );
diff --git a/tp/Texinfo/XS/main/document.c b/tp/Texinfo/XS/main/document.c
index 69f1c04f28..6c2cbd0263 100644
--- a/tp/Texinfo/XS/main/document.c
+++ b/tp/Texinfo/XS/main/document.c
@@ -31,6 +31,7 @@
 #include "floats.h"
 #include "manipulate_indices.h"
 #include "convert_to_text.h"
+#include "output_unit.h"
 #include "document.h"
 
 static DOCUMENT **document_list;
@@ -407,6 +408,9 @@ destroy_document_information_except_tree (DOCUMENT 
*document)
     }
   if (document->convert_index_text_options)
     destroy_text_options (document->convert_index_text_options);
+
+  free_output_units_lists (&document->output_units_lists);
+
   if (document->merged_indices)
     destroy_merged_indices (document->merged_indices);
   if (document->indices_sort_strings)
diff --git a/tp/Texinfo/XS/main/output_unit.c b/tp/Texinfo/XS/main/output_unit.c
index 5597d0743b..2f1d156ae4 100644
--- a/tp/Texinfo/XS/main/output_unit.c
+++ b/tp/Texinfo/XS/main/output_unit.c
@@ -300,6 +300,43 @@ unsplit (DOCUMENT *document)
   return unsplit_needed;
 }
 
+void
+destroy_output_unit (OUTPUT_UNIT *output_unit)
+{
+  free (output_unit->unit_contents.list);
+  /* no need to free output_unit->unit_filename as it is a
+     reference on output_unit_files list FILE_NAME_PATH_COUNTER
+   */
+  free (output_unit);
+}
+
+void
+free_output_unit_list (OUTPUT_UNIT_LIST *output_units_list)
+{
+  size_t i;
+
+  for (i = 0; i < output_units_list->number; i++)
+    {
+      destroy_output_unit (output_units_list->list[i]);
+    }
+  free (output_units_list->list);
+}
+
+void
+free_output_units_lists (OUTPUT_UNIT_LISTS *output_units_lists)
+{
+  size_t i;
+
+  for (i = 0; i < output_units_lists->number; i++)
+    {
+      OUTPUT_UNIT_LIST *output_units_list
+         = &output_units_lists->output_units_lists[i];
+      free_output_unit_list (output_units_list);
+    }
+  free (output_units_lists->output_units_lists);
+  memset (output_units_lists, 0, sizeof (OUTPUT_UNIT_LISTS));
+}
+
 
 static ELEMENT *
 output_unit_section (OUTPUT_UNIT *output_unit)
diff --git a/tp/Texinfo/XS/main/output_unit.h b/tp/Texinfo/XS/main/output_unit.h
index a1de893d70..ef4d63045a 100644
--- a/tp/Texinfo/XS/main/output_unit.h
+++ b/tp/Texinfo/XS/main/output_unit.h
@@ -21,6 +21,7 @@ void split_pages (OUTPUT_UNIT_LIST *output_units, const char 
*split);
 OUTPUT_UNIT *new_output_unit (enum output_unit_type unit_type);
 void add_to_output_unit_list (OUTPUT_UNIT_LIST *list,
                               OUTPUT_UNIT *output_unit);
+void free_output_units_lists (OUTPUT_UNIT_LISTS *output_units_lists);
 
 char *output_unit_texi (const OUTPUT_UNIT *output_unit);
 



reply via email to

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