texinfo-commits
[Top][All Lists]
Advanced

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

branch master updated: * tp/Texinfo/XS/convert/call_html_perl_function.c


From: Patrice Dumas
Subject: branch master updated: * tp/Texinfo/XS/convert/call_html_perl_function.c (clear_registered_ids_hv, free_registered_ids_hv), tp/Texinfo/XS/convert/html_converter_finish.c (html_reset_converter) (html_free_converter), tp/Texinfo/XS/convert/replace_perl_call_html_function.c (clear_registered_ids_hv, free_registered_ids_hv): reset or free data only if it has been set, in particular if a converter is free'd right after having been setup.
Date: Sat, 05 Oct 2024 03:45:33 -0400

This is an automated email from the git hooks/post-receive script.

pertusus pushed a commit to branch master
in repository texinfo.

The following commit(s) were added to refs/heads/master by this push:
     new 73d05366e6 * tp/Texinfo/XS/convert/call_html_perl_function.c 
(clear_registered_ids_hv, free_registered_ids_hv), 
tp/Texinfo/XS/convert/html_converter_finish.c (html_reset_converter) 
(html_free_converter), tp/Texinfo/XS/convert/replace_perl_call_html_function.c 
(clear_registered_ids_hv, free_registered_ids_hv): reset or free data only if 
it has been set, in particular if a converter is free'd right after having been 
setup.
73d05366e6 is described below

commit 73d05366e69732fe535dd45253fc41406177e9ed
Author: Patrice Dumas <pertusus@free.fr>
AuthorDate: Thu Aug 22 21:26:10 2024 +0200

    * tp/Texinfo/XS/convert/call_html_perl_function.c
    (clear_registered_ids_hv, free_registered_ids_hv),
    tp/Texinfo/XS/convert/html_converter_finish.c (html_reset_converter)
    (html_free_converter),
    tp/Texinfo/XS/convert/replace_perl_call_html_function.c
    (clear_registered_ids_hv, free_registered_ids_hv): reset or free data
    only if it has been set, in particular if a converter is free'd right
    after having been setup.
---
 ChangeLog                                          | 11 +++++++
 tp/Texinfo/XS/convert/call_html_perl_function.c    |  6 ++--
 tp/Texinfo/XS/convert/html_converter_finish.c      | 36 ++++++++++++++--------
 .../XS/convert/replace_perl_call_html_function.c   |  6 ++--
 4 files changed, 42 insertions(+), 17 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c4c2248b40..2b83aaac7f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2024-08-22  Patrice Dumas  <pertusus@free.fr>
+
+       * tp/Texinfo/XS/convert/call_html_perl_function.c
+       (clear_registered_ids_hv, free_registered_ids_hv),
+       tp/Texinfo/XS/convert/html_converter_finish.c (html_reset_converter)
+       (html_free_converter),
+       tp/Texinfo/XS/convert/replace_perl_call_html_function.c
+       (clear_registered_ids_hv, free_registered_ids_hv): reset or free data
+       only if it has been set, in particular if a converter is free'd right
+       after having been setup.
+
 2024-08-22  Patrice Dumas  <pertusus@free.fr>
 
        * tp/maintain/regenerate_C_options_info.pl: remove leading directory
diff --git a/tp/Texinfo/XS/convert/call_html_perl_function.c 
b/tp/Texinfo/XS/convert/call_html_perl_function.c
index 9d7249186a..dfa32a5e4c 100644
--- a/tp/Texinfo/XS/convert/call_html_perl_function.c
+++ b/tp/Texinfo/XS/convert/call_html_perl_function.c
@@ -2435,7 +2435,8 @@ clear_registered_ids_hv (CONVERTER *self)
 {
   dTHX;
 
-  hv_clear (self->registered_ids_hv);
+  if (self->registered_ids_hv)
+    hv_clear (self->registered_ids_hv);
 }
 
 void
@@ -2443,5 +2444,6 @@ free_registered_ids_hv (CONVERTER *self)
 {
   dTHX;
 
-  hv_undef (self->registered_ids_hv);
+  if (self->registered_ids_hv)
+    hv_undef (self->registered_ids_hv);
 }
diff --git a/tp/Texinfo/XS/convert/html_converter_finish.c 
b/tp/Texinfo/XS/convert/html_converter_finish.c
index 573598b8dc..d4c22dfb5c 100644
--- a/tp/Texinfo/XS/convert/html_converter_finish.c
+++ b/tp/Texinfo/XS/convert/html_converter_finish.c
@@ -157,7 +157,7 @@ html_reset_converter (CONVERTER *self)
 
   if (self->ids_data_type == IDT_perl_hashmap)
     clear_registered_ids_hv (self);
-  else
+  else if (self->registered_ids)
     clear_strings_list (self->registered_ids);
 
   for (i = 0; i < ST_footnote_location+1; i++)
@@ -177,7 +177,8 @@ html_reset_converter (CONVERTER *self)
 
   /* formatted_index_entries may not be initialized if there was an error
      early and prepare_conversion_units_targets was never called */
-  if (self->document->indices_info.number
+  if (self->document
+      && self->document->indices_info.number
       && self->shared_conversion_state.formatted_index_entries)
     {
       for (i = 0; i < self->sorted_index_names.number; i++)
@@ -335,7 +336,8 @@ html_free_converter (CONVERTER *self)
     free_registered_ids_hv (self);
   else
     {
-      destroy_strings_list (self->registered_ids);
+      if (self->registered_ids)
+        destroy_strings_list (self->registered_ids);
       self->registered_ids = 0;
     }
 
@@ -444,12 +446,16 @@ html_free_converter (CONVERTER *self)
     {
       int j;
       char ***type_dir_strings = self->directions_strings[i];
-      html_clear_direction_string_type (self, type_dir_strings);
-      for (j = 0; j < nr_string_directions; j++)
+  /* type_dir_strings not set if converter is destroyed before output */
+      if (type_dir_strings)
         {
-          free (type_dir_strings[j]);
+          html_clear_direction_string_type (self, type_dir_strings);
+          for (j = 0; j < nr_string_directions; j++)
+            {
+              free (type_dir_strings[j]);
+            }
+          free (type_dir_strings);
         }
-      free (type_dir_strings);
     }
 
   for (i = 0; i < (TDS_TYPE_MAX_NR) - (TDS_TRANSLATED_MAX_NR); i++)
@@ -497,16 +503,20 @@ html_free_converter (CONVERTER *self)
       int j;
       HTML_DIRECTION_STRING_TRANSLATED *translated
         = self->translated_direction_strings[i];
-      for (j = 0; j < nr_string_directions; j++)
+  /* translated not set if converter is destroyed before setting defaults */
+      if (translated)
         {
-          int k;
-          free (translated[j].to_convert);
-          for (k = 0; k < nr_dir_str_contexts; k++)
+          for (j = 0; j < nr_string_directions; j++)
             {
-              free (translated[j].converted[k]);
+              int k;
+              free (translated[j].to_convert);
+              for (k = 0; k < nr_dir_str_contexts; k++)
+                {
+                  free (translated[j].converted[k]);
+                }
             }
+          free (translated);
         }
-      free (translated);
     }
 
   for (j = 0; j < self->htmlxref.number; j++)
diff --git a/tp/Texinfo/XS/convert/replace_perl_call_html_function.c 
b/tp/Texinfo/XS/convert/replace_perl_call_html_function.c
index 0fba386433..325cb07c16 100644
--- a/tp/Texinfo/XS/convert/replace_perl_call_html_function.c
+++ b/tp/Texinfo/XS/convert/replace_perl_call_html_function.c
@@ -361,13 +361,15 @@ hv_register_id (CONVERTER *self, const char *string)
 void
 clear_registered_ids_hv (CONVERTER *self)
 {
-  clear_strings_list (self->registered_ids);
+  if (self->registered_ids)
+    clear_strings_list (self->registered_ids);
 }
 
 void
 free_registered_ids_hv (CONVERTER *self)
 {
-  destroy_strings_list (self->registered_ids);
+  if (self->registered_ids)
+    destroy_strings_list (self->registered_ids);
   self->registered_ids = 0;
 }
 



reply via email to

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