I'd noticed a while ago that increment/decrement (CTRL-A/CTRL-X, of
course) in Fedora-packaged vim-minimal binaries -- essentially tiny
builds -- started producing odd results, e.g. a file containing '1234'
on the first/only line looks like this after CTRL-A anywhere in that
line:

12352

and after another:

123532

and another:

1235332

...and so on.  The numbers don't matter much aside from always inserting
earlier digits.  Bisecting found the culprit:

╶➤ git bisect good
94b7c3233ef534acc669b3083ed1fe59cf3a090b is the first bad commit
commit 94b7c3233ef534acc669b3083ed1fe59cf3a090b (tag: v9.1.0172)
Author: zeertzjq <zeert...@outlook.com>
Date:   Tue Mar 12 21:50:32 2024 +0100

    patch 9.1.0172: More code can use ml_get_buf_len() instead of STRLEN()


And reverting the change to ops.c:do_addsub() from that patch does
restore correct behavior:

diff --git a/src/ops.c b/src/ops.c
index 1dd36ab28..0fdbc9c24 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -3059,12 +3059,14 @@ do_addsub(
        // del_char() will also mark line needing displaying
        if (todel > 0)
        {
-           int bytes_after = ml_get_curline_len() - curwin->w_cursor.col;
+           int bytes_after = (int)STRLEN(ml_get_curline())
+                                                       - curwin->w_cursor.col;

            // Delete the one character before the insert.
            curwin->w_cursor = save_pos;
            (void)del_char(FALSE);
-           curwin->w_cursor.col = ml_get_curline_len() - bytes_after;
+           curwin->w_cursor.col = (colnr_T)(STRLEN(ml_get_curline())
+                                                               - bytes_after);
            --todel;
        }
        while (todel-- > 0)


It's not obvious why that causes the problem, though -- nor why it only
affects tiny builds.  (Fedora-packaged huge builds up through the
current 9.1.0452 package on Fedora 40 don't exhibit this problem.)

I'm out of time for now; figured I'd post what I have, since it might be
more apparent to someone familiar with this code.

-Rob

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/029caf1e4dcaa443ea78c721c96ae0f3fa7cfb74.camel%40loonybin.net.

Raspunde prin e-mail lui