# HG changeset patch # User Bram Moolenaar # Date 1638540005 -3600 # Node ID 43d196ca5e7a9972c32c03c4af08f2d50023f8fc # Parent 070e77657c215e90708e66a5f92945bf8f60d0c8 patch 8.2.3728: internal error when passing range() to list2blob() Commit: https://github.com/vim/vim/commit/04b7b4bf7fe57375bf3c4ed3fd087fc0bb0147ba Author: kuuote Date: Fri Dec 3 13:57:00 2021 +0000 patch 8.2.3728: internal error when passing range() to list2blob() Problem: Internal error when passing range() to list2blob(). Solution: Materialize the list first. (closes https://github.com/vim/vim/issues/9262) diff --git a/src/blob.c b/src/blob.c --- a/src/blob.c +++ b/src/blob.c @@ -526,6 +526,7 @@ f_list2blob(typval_T *argvars, typval_T if (l == NULL) return; + CHECK_LIST_MATERIALIZE(l); FOR_ALL_LIST_ITEMS(l, li) { int error; diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim --- a/src/testdir/test_blob.vim +++ b/src/testdir/test_blob.vim @@ -675,7 +675,10 @@ func Test_list2blob() let b = range(16)->repeat(64)->list2blob() call assert_equal(1024, b->len()) call assert_equal([4, 8, 15], [b[100], b[1000], b[1023]]) + call assert_equal(0z, list2blob(test_null_list())) + call assert_equal(0z00010203, list2blob(range(4))) endfunc + " vim: shiftwidth=2 sts=2 expandtab diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3728, +/**/ 3727, /**/ 3726,