Hi Patrice,

> it may be an issue that is also present with the current code.

Yes, the issue is also present in the current code.

> I still do not get why it only affects me?

It affects me as well, when I use the Ubuntu binary instead of the
one that I compiled for myself in 2016.

Probably you are the first one to report it because
  - there are not many GNU packages any more that still keep
    a ChangeLog the old way,
  - most of the developers of these packages have already installed
    their copy of git-merge-changelog a long time ago.

Should be fixed through this commit:


2025-07-29  Bruno Haible  <[email protected]>

        git-merge-changelog: Fix essential functionality (regr. 2023-05-21).
        Fixes two mistakes in commit a8921605af342b9061e04e18fc952d386e5a071c.
        Reported by Patrice Dumas <[email protected]> in
        <https://lists.gnu.org/archive/html/bug-gnulib/2025-07/msg00181.html>.
        * lib/git-merge-changelog.c (main): Fix off-by-one mistakes in crucial
        places.

diff --git a/lib/git-merge-changelog.c b/lib/git-merge-changelog.c
index 190dafc140..cc496bb4cb 100644
--- a/lib/git-merge-changelog.c
+++ b/lib/git-merge-changelog.c
@@ -1242,10 +1242,9 @@ There is NO WARRANTY, to the extent permitted by law.\n\
                 {
                   /* An addition to the top of modified_file.
                      Apply it to the top of mainstream_file.  */
-                  idx_t j;
-                  for (j = edit->j2; j > edit->j1; )
+                  ptrdiff_t j;
+                  for (j = edit->j2; j >= edit->j1; j--)
                     {
-                      j--;
                       struct entry *added_entry = modified_file.entries[j];
                       gl_list_add_first (result_entries, added_entry);
                     }
@@ -1623,11 +1622,10 @@ There is NO WARRANTY, to the extent permitted by law.\n\
                           {
                             gl_list_node_t node_for_insert =
                               result_entries_pointers[k_first];
-                            idx_t j;
+                            ptrdiff_t j;
                             idx_t i;
-                            for (j = edit->j2; j > edit->j1; )
+                            for (j = edit->j2; j >= edit->j1; j--)
                               {
-                                j--;
                                 struct entry *new_entry = 
modified_file.entries[j];
                                 gl_list_add_before (result_entries, 
node_for_insert, new_entry);
                               }




Reply via email to