summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0660
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0660')
-rw-r--r--data/vim/patches/8.1.0660221
1 files changed, 221 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0660 b/data/vim/patches/8.1.0660
new file mode 100644
index 000000000..d30a83b30
--- /dev/null
+++ b/data/vim/patches/8.1.0660
@@ -0,0 +1,221 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.0660
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.0660
+Problem: sign_unplace() may leak memory.
+Solution: Free the group name before returning. Add a few more tests.
+ (Yegappan Lakshmanan)
+Files: src/evalfunc.c, src/testdir/test_signs.vim
+
+
+*** ../vim-8.1.0659/src/evalfunc.c 2018-12-29 18:53:07.843607433 +0100
+--- src/evalfunc.c 2018-12-29 20:42:30.370357956 +0100
+***************
+*** 11578,11584 ****
+ if (argvars[1].v_type != VAR_DICT)
+ {
+ EMSG(_(e_dictreq));
+! return;
+ }
+ dict = argvars[1].vval.v_dict;
+
+--- 11578,11584 ----
+ if (argvars[1].v_type != VAR_DICT)
+ {
+ EMSG(_(e_dictreq));
+! goto cleanup;
+ }
+ dict = argvars[1].vval.v_dict;
+
+***************
+*** 11589,11595 ****
+ {
+ EMSG2(_("E158: Invalid buffer name: %s"),
+ tv_get_string(&di->di_tv));
+! return;
+ }
+ }
+ if (dict_find(dict, (char_u *)"id", -1) != NULL)
+--- 11589,11595 ----
+ {
+ EMSG2(_("E158: Invalid buffer name: %s"),
+ tv_get_string(&di->di_tv));
+! goto cleanup;
+ }
+ }
+ if (dict_find(dict, (char_u *)"id", -1) != NULL)
+***************
+*** 11608,11613 ****
+--- 11608,11615 ----
+ if (sign_unplace(sign_id, group, buf, 0) == OK)
+ rettv->vval.v_number = 0;
+ }
++
++ cleanup:
+ vim_free(group);
+ }
+ #endif
+*** ../vim-8.1.0659/src/testdir/test_signs.vim 2018-12-29 18:53:07.843607433 +0100
+--- src/testdir/test_signs.vim 2018-12-29 20:48:20.911472019 +0100
+***************
+*** 385,390 ****
+--- 385,392 ----
+ \ {"lnum" : -1})', 'E885:')
+ call assert_fails('call sign_place(22, "", "sign1", "Xsign",
+ \ {"lnum" : 0})', 'E885:')
++ call assert_fails('call sign_place(22, "", "sign1", "Xsign",
++ \ {"lnum" : []})', 'E745:')
+ call assert_equal(-1, sign_place(1, "*", "sign1", "Xsign", {"lnum" : 10}))
+
+ " Tests for sign_getplaced()
+***************
+*** 420,428 ****
+ \ {'id' : 20, 'buffer' : 'buffer.c'})", 'E158:')
+ call assert_fails("call sign_unplace('',
+ \ {'id' : 20, 'buffer' : ''})", 'E158:')
+! call assert_fails("call sign_unplace('',
+ \ {'id' : 20, 'buffer' : 200})", 'E158:')
+! call assert_fails("call sign_unplace('', 'mySign')", 'E715:')
+
+ " Tests for sign_undefine()
+ call assert_equal(0, sign_undefine("sign1"))
+--- 422,430 ----
+ \ {'id' : 20, 'buffer' : 'buffer.c'})", 'E158:')
+ call assert_fails("call sign_unplace('',
+ \ {'id' : 20, 'buffer' : ''})", 'E158:')
+! call assert_fails("call sign_unplace('g1',
+ \ {'id' : 20, 'buffer' : 200})", 'E158:')
+! call assert_fails("call sign_unplace('g1', 'mySign')", 'E715:')
+
+ " Tests for sign_undefine()
+ call assert_equal(0, sign_undefine("sign1"))
+***************
+*** 664,670 ****
+ call delete("Xsign")
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ endfunc
+
+ " Place signs used for ":sign unplace" command test
+--- 666,672 ----
+ call delete("Xsign")
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ endfunc
+
+ " Place signs used for ":sign unplace" command test
+***************
+*** 1013,1019 ****
+
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ call delete("Xsign1")
+ call delete("Xsign2")
+ endfunc
+--- 1015,1021 ----
+
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ call delete("Xsign1")
+ call delete("Xsign2")
+ endfunc
+***************
+*** 1042,1047 ****
+--- 1044,1052 ----
+
+ call assert_equal(1, sign_place(0, 'g1', 'sign1', 'Xsign',
+ \ {'lnum' : 11}))
++ " Check for the next generated sign id in this group
++ call assert_equal(2, sign_place(0, 'g1', 'sign1', 'Xsign',
++ \ {'lnum' : 12}))
+ call assert_equal(0, sign_unplace('g1', {'id' : 1}))
+ call assert_equal(10,
+ \ sign_getplaced('Xsign', {'id' : 1})[0].signs[0].lnum)
+***************
+*** 1049,1055 ****
+ call delete("Xsign")
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ endfunc
+
+ " Test for sign priority
+--- 1054,1060 ----
+ call delete("Xsign")
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ endfunc
+
+ " Test for sign priority
+***************
+*** 1085,1090 ****
+--- 1090,1097 ----
+ " Error case
+ call assert_fails("call sign_place(1, 'g1', 'sign1', 'Xsign',
+ \ [])", 'E715:')
++ call assert_fails("call sign_place(1, 'g1', 'sign1', 'Xsign',
++ \ {'priority' : []})", 'E745:')
+ call sign_unplace('*')
+
+ " Tests for the :sign place command with priority
+***************
+*** 1104,1110 ****
+
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ call delete("Xsign")
+ endfunc
+
+--- 1111,1117 ----
+
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ call delete("Xsign")
+ endfunc
+
+***************
+*** 1146,1151 ****
+
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ call delete("Xsign")
+ endfunc
+--- 1153,1158 ----
+
+ call sign_unplace('*')
+ call sign_undefine()
+! enew | only
+ call delete("Xsign")
+ endfunc
+*** ../vim-8.1.0659/src/version.c 2018-12-29 20:04:36.257512068 +0100
+--- src/version.c 2018-12-29 20:57:28.734930503 +0100
+***************
+*** 801,802 ****
+--- 801,804 ----
+ { /* Add new patch number below this line */
++ /**/
++ 660,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+81. At social functions you introduce your husband as "my domain server."
+
+ /// 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 ///