To: vim_dev@googlegroups.com Subject: Patch 7.3.516 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.516 Problem: extend(o, o) may crash Vim. Solution: Fix crash and add test. (Thinca and Hirohito Higashi) Files: src/eval.c, src/testdir/test55.in, src/testdir/test55.ok *** ../vim-7.3.515/src/eval.c 2012-04-30 17:35:44.000000000 +0200 --- src/eval.c 2012-05-18 12:02:44.000000000 +0200 *************** *** 10191,10197 **** EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); break; } ! else if (*action == 'f') { clear_tv(&di1->di_tv); copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); --- 10191,10197 ---- EMSG2(_("E737: Key already exists: %s"), hi2->hi_key); break; } ! else if (*action == 'f' && HI2DI(hi2) != di1) { clear_tv(&di1->di_tv); copy_tv(&HI2DI(hi2)->di_tv, &di1->di_tv); *** ../vim-7.3.515/src/testdir/test55.in 2010-11-10 20:31:24.000000000 +0100 --- src/testdir/test55.in 2012-05-18 11:57:23.000000000 +0200 *************** *** 352,357 **** --- 352,375 ---- :let dict4copy = deepcopy(dict4) :$put =(l == lcopy) :$put =(dict4 == dict4copy) + :" + :" Pass the same List to extend() + :let l = [1, 2, 3, 4, 5] + :call extend(l, l) + :$put =string(l) + :" + :" Pass the same Dict to extend() + :let d = { 'a': {'b': 'B'}} + :call extend(d, d) + :$put =string(d) + :" + :" Pass the same Dict to extend() with "error" + :try + : call extend(d, d, "error") + :catch + : $put =v:exception[:15] . v:exception[-1:-1] + :endtry + :$put =string(d) :endfun :" :call Test(1, 2, [3, 4], {5: 6}) " This may take a while *** ../vim-7.3.515/src/testdir/test55.ok 2010-11-10 20:31:24.000000000 +0100 --- src/testdir/test55.ok 2012-05-18 11:57:01.000000000 +0200 *************** *** 111,113 **** --- 111,117 ---- 0 1 1 + [1, 2, 3, 4, 5, 1, 2, 3, 4, 5] + {'a': {'b': 'B'}} + Vim(call):E737: a + {'a': {'b': 'B'}} *** ../vim-7.3.515/src/version.c 2012-04-30 21:09:38.000000000 +0200 --- src/version.c 2012-05-18 12:04:54.000000000 +0200 *************** *** 716,717 **** --- 716,719 ---- { /* Add new patch number below this line */ + /**/ + 516, /**/ -- I used to wonder about the meaning of life. But I looked it up in the dictionary under "L" and there it was - the meaning of life. It was less than I expected. - Dogbert /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org ///