Mercurial > vim
annotate src/testdir/test_cjk_linebreak.vim @ 33802:b857615e5d42 v9.0.2117
patch 9.0.2117: [security] use-after-free in qf_free_items
Commit: https://github.com/vim/vim/commit/567cae2630a51efddc07eacff3b38a295e1f5671
Author: Christian Brabandt <cb@256bit.org>
Date: Sun Nov 19 16:19:27 2023 +0100
patch 9.0.2117: [security] use-after-free in qf_free_items
Problem: [security] use-after-free in qf_free_items
Solution: only access qfpnext, if it hasn't been freed
Coverity discovered a possible use-after-free in qf_free_items. When
freeing the qfline items, we may access freed memory, when qfp ==
qfpnext.
So only access qfpnext, when it hasn't been freed.
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 21 Nov 2023 20:15:05 +0100 |
parents | 08940efa6b4e |
children |
rev | line source |
---|---|
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
20719
diff
changeset
|
1 " Test for CJK linebreak |
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
20719
diff
changeset
|
2 |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
3 scriptencoding utf-8 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
4 |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
5 func Run_cjk_linebreak_after(rigorous) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
6 set textwidth=12 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
7 for punct in [ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
8 \ '!', '%', ')', ',', ':', ';', '>', '?', ']', '}', '’', '”', '†', '‡', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
9 \ '…', '‰', '‱', '‼', '⁇', '⁈', '⁉', '℃', '℉', '、', '。', '〉', '》', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
10 \ '」', '』', '】', '〕', '〗', '〙', '〛', '!', ')', ',', '.', ':', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
11 \ ';', '?', ']', '}'] |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
12 call setline('.', '这是一个测试' .. punct.'试试 CJK 行禁则补丁。') |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
13 normal gqq |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
14 if a:rigorous |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
15 call assert_equal('这是一个测', getline(1)) |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
16 else |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
17 call assert_equal('这是一个测试' .. punct, getline(1)) |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
18 endif |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
19 %d_ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
20 endfor |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
21 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
22 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
23 func Test_cjk_linebreak_after() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
24 set formatoptions=croqn2mB1j |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
25 call Run_cjk_linebreak_after(0) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
26 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
27 |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
28 func Test_cjk_linebreak_after_rigorous() |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
29 set formatoptions=croqn2mB1j] |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
30 call Run_cjk_linebreak_after(1) |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
31 endfunc |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
32 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
33 func Run_cjk_linebreak_before() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
34 set textwidth=12 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
35 for punct in [ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
36 \ '(', '<', '[', '`', '{', '‘', '“', '〈', '《', '「', '『', '【', '〔', |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
37 \ '〖', '〘', '〚', '(', '[', '{'] |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
38 call setline('.', '这是个测试' .. punct.'试试 CJK 行禁则补丁。') |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
39 normal gqq |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
40 call assert_equal('这是个测试', getline(1)) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
41 %d_ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
42 endfor |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
43 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
44 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
45 func Test_cjk_linebreak_before() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
46 set formatoptions=croqn2mB1j |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
47 call Run_cjk_linebreak_before() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
48 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
49 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
50 func Test_cjk_linebreak_before_rigorous() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
51 set formatoptions=croqn2mB1j] |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
52 call Run_cjk_linebreak_before() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
53 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
54 |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
55 func Run_cjk_linebreak_nobetween(rigorous) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
56 " …… must not start a line |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
57 call setline('.', '这是个测试……试试 CJK 行禁则补丁。') |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
58 set textwidth=12 ambiwidth=double |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
59 normal gqq |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
60 if a:rigorous |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
61 call assert_equal('这是个测', getline(1)) |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
62 else |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
63 call assert_equal('这是个测试……', getline(1)) |
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
64 endif |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
65 %d_ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
66 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
67 call setline('.', '这是一个测试……试试 CJK 行禁则补丁。') |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
68 set textwidth=12 ambiwidth=double |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
69 normal gqq |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
70 call assert_equal('这是一个测', getline(1)) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
71 %d_ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
72 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
73 " but —— can |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
74 call setline('.', '这是个测试——试试 CJK 行禁则补丁。') |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
75 set textwidth=12 ambiwidth=double |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
76 normal gqq |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
77 call assert_equal('这是个测试', getline(1)) |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
78 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
79 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
80 func Test_cjk_linebreak_nobetween() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
81 set formatoptions=croqn2mB1j |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
82 call Run_cjk_linebreak_nobetween(0) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
83 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
84 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
85 func Test_cjk_linebreak_nobetween_rigorous() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
86 set formatoptions=croqn2mB1j] |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
87 call Run_cjk_linebreak_nobetween(1) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
88 endfunc |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
89 |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
90 func Test_cjk_linebreak_join_punct() |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
91 for punct in ['——', '〗', ',', '。', '……'] |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
92 call setline(1, '文本文本' .. punct) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
93 call setline(2, 'English') |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
94 set formatoptions=croqn2mB1j |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
95 normal ggJ |
20719
ef2a4a650c67
patch 8.2.0912: a few test cases for CJK formatting are disabled
Bram Moolenaar <Bram@vim.org>
parents:
20695
diff
changeset
|
96 call assert_equal('文本文本' .. punct.'English', getline(1)) |
20695
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
97 %d_ |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
98 endfor |
cea8ae407452
patch 8.2.0901: formatting CJK text isn't optimal
Bram Moolenaar <Bram@vim.org>
parents:
diff
changeset
|
99 endfunc |
21765
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
20719
diff
changeset
|
100 |
08940efa6b4e
patch 8.2.1432: various inconsistencies in test files
Bram Moolenaar <Bram@vim.org>
parents:
20719
diff
changeset
|
101 " vim: shiftwidth=2 sts=2 expandtab |