gbranden pushed a commit to branch master
in repository groff.

commit 6837e0dce513cf90b35c94ff806690381e228e92
Author: G. Branden Robinson <[email protected]>
AuthorDate: Thu Sep 17 19:07:04 2026 -0500

    [libbib,indxbib]: Fix Savannah #68703 (3/4).
    
    Fix mismatched memory allocation/deallocation techniques, which risks
    undefined behavior (UB) in C++.
    
    * src/libs/libbib/index.cpp
      (index_search_item_iterator::~index_search_item_iterator): Deallocate
      `query` with free(3) rather than `delete[]`.
---
 ChangeLog                 | 3 +++
 src/libs/libbib/index.cpp | 4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index ef659967b..58224001c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,6 +9,9 @@
        `query` with free(3) rather than `delete[]`.
        (search_item::~search_item): Deallocate `name` with free(3)
        rather than `delete[]`.
+       * src/libs/libbib/index.cpp
+       (index_search_item_iterator::~index_search_item_iterator):
+       Deallocate `query` with free(3) rather than `delete[]`.
 
 2026-09-12  G. Branden Robinson <[email protected]>
 
diff --git a/src/libs/libbib/index.cpp b/src/libs/libbib/index.cpp
index a142a7083..a1665ca5c 100644
--- a/src/libs/libbib/index.cpp
+++ b/src/libs/libbib/index.cpp
@@ -100,7 +100,7 @@ class index_search_item_iterator : public 
search_item_iterator {
   char *buf;
   int buflen;
   linear_searcher searcher;
-  char *query;
+  char *query; // to be freed with free()
   int get_tag(int tagno, const linear_searcher &, const char **, int *,
              reference_id *);
 public:
@@ -378,7 +378,7 @@ index_search_item_iterator::~index_search_item_iterator()
 {
   delete[] temp_list;
   delete[] buf;
-  delete[] query;
+  free(query);
   delete out_of_date_files_iter;
 }
 

_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to