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);
}