# HG changeset patch # User Bram Moolenaar # Date 1629902703 -7200 # Node ID ab42c36d1a274c3c6583bb138535c9842d6ece38 # Parent 215c114b02744f4b93d268a3f7be34d43649ee1d patch 8.2.3372: line2byte() value wrong when adding a text property Commit: https://github.com/vim/vim/commit/cdd8a5e6fe089a3b1370ac940d06fc3cefc6f8f2 Author: Bram Moolenaar Date: Wed Aug 25 16:40:03 2021 +0200 patch 8.2.3372: line2byte() value wrong when adding a text property Problem: line2byte() value wrong when adding a text property. (Yuto Kimura) Solution: Adjust length for text property. (closes https://github.com/vim/vim/issues/8772) Also fix it for deleting a line. diff --git a/src/memline.c b/src/memline.c --- a/src/memline.c +++ b/src/memline.c @@ -3251,9 +3251,15 @@ ml_append_int( } #ifdef FEAT_BYTEOFF +# ifdef FEAT_PROP_POPUP + if (curbuf->b_has_textprop) + // only use the space needed for the text, ignore properties + len = (colnr_T)STRLEN(line) + 1; +# endif // The line was inserted below 'lnum' ml_updatechunk(buf, lnum + 1, (long)len, ML_CHNK_ADDLINE); #endif + #ifdef FEAT_NETBEANS_INTG if (netbeans_active()) { @@ -3752,7 +3758,11 @@ ml_delete_int(buf_T *buf, linenr_T lnum, } #ifdef FEAT_BYTEOFF - ml_updatechunk(buf, lnum, line_size, ML_CHNK_DELLINE); + ml_updatechunk(buf, lnum, line_size +# ifdef FEAT_PROP_POPUP + - textprop_save_len +# endif + , ML_CHNK_DELLINE); #endif ret = OK; diff --git a/src/testdir/test_textprop.vim b/src/testdir/test_textprop.vim --- a/src/testdir/test_textprop.vim +++ b/src/testdir/test_textprop.vim @@ -857,6 +857,15 @@ func Test_prop_line2byte() call assert_equal(1491, line2byte(401)) bwipe! + new + call setline(1, range(520)) + call assert_equal(1491, line2byte(401)) + call prop_add(2, 1, {'type': 'comment'}) + call assert_equal(1491, line2byte(401)) + 2delete + call assert_equal(1489, line2byte(400)) + bwipe! + call prop_type_delete('comment') endfunc diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -756,6 +756,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3372, +/**/ 3371, /**/ 3370,