From 338ce77f34ae12451acadee904feec4f84e4bc74 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Wed, 9 Sep 2026 06:58:59 +0800 Subject: [PATCH] vim-patch:9.2.1041: vim_strbyte() can be improved (#41784) Problem: vim_strbyte() can be improved Solution: Replace the byte-by-byte scan in vim_strbyte() with strchr(), preserving its byte-range and NUL behavior (Yasuhiro Matsumoto). closes: vim/vim#21240 https://github.com/vim/vim/commit/df4ef959d533f9c21a2d2de0b177ff786b1b37ef Co-authored-by: Yasuhiro Matsumoto --- test/old/testdir/test_regexp_utf8.vim | 29 ++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/test/old/testdir/test_regexp_utf8.vim b/test/old/testdir/test_regexp_utf8.vim index 272d3d535e..f919efd1df 100644 --- a/test/old/testdir/test_regexp_utf8.vim +++ b/test/old/testdir/test_regexp_utf8.vim @@ -1,6 +1,33 @@ " Tests for regexp in utf8 encoding -source shared.vim +func Test_regexp_literal_byte_search() + let save_encoding = &encoding + let save_re = ®expengine + try + "for enc in ['latin1', 'utf-8'] + for enc in ['utf-8'] + let &encoding = enc + for engine in [1, 2] + let ®expengine = engine + let chars = ['z', nr2char(0x7f), nr2char(0xff)] + if enc == 'utf-8' + call add(chars, nr2char(0x100)) + endif + for c in chars + let prefix = repeat('x', 4096) + call assert_equal(-1, match('', c)) + call assert_equal(-1, match(prefix, c)) + call assert_equal(0, match(c .. prefix, c)) + call assert_equal(4096, match(prefix .. c, c)) + endfor + call assert_equal(-1, match('xxx', '\%d0')) + endfor + endfor + finally + let &encoding = save_encoding + let ®expengine = save_re + endtry +endfunc func s:equivalence_test() let str = "AÀÁÂÃÄÅĀĂĄǍǞǠǺȂȦȺḀẠẢẤẦẨẪẬẮẰẲẴẶ BƁɃḂḄḆ CÇĆĈĊČƇȻḈꞒ DĎĐƊḊḌḎḐḒ EÈÉÊËĒĔĖĘĚȄȆȨɆḔḖḘḚḜẸẺẼẾỀỂỄỆ FƑḞꞘ GĜĞĠĢƓǤǦǴḠꞠ HĤĦȞḢḤḦḨḪⱧ IÌÍÎÏĨĪĬĮİƗǏȈȊḬḮỈỊ JĴɈ KĶƘǨḰḲḴⱩꝀ LĹĻĽĿŁȽḶḸḺḼⱠ MḾṀṂ NÑŃŅŇǸṄṆṈṊꞤ OÒÓÔÕÖØŌŎŐƟƠǑǪǬǾȌȎȪȬȮȰṌṎṐṒỌỎỐỒỔỖỘỚỜỞỠỢ PƤṔṖⱣ QɊ RŔŖŘȐȒɌṘṚṜṞⱤꞦ SŚŜŞŠȘṠṢṤṦṨⱾꞨ TŢŤŦƬƮȚȾṪṬṮṰ UÙÚÛÜŨŪŬŮŰƯǕǙǛǓǗȔȖɄṲṴṶṸṺỤỦỨỪỬỮỰ VƲṼṾ WŴẀẂẄẆẈ XẊẌ YÝŶŸƳȲɎẎỲỴỶỸ ZŹŻŽƵẐẒẔⱫ aàáâãäåāăąǎǟǡǻȃȧᶏḁẚạảấầẩẫậắằẳẵặⱥ bƀɓᵬᶀḃḅḇ cçćĉċčƈȼḉꞓꞔ dďđɗᵭᶁᶑḋḍḏḑḓ eèéêëēĕėęěȅȇȩɇᶒḕḗḙḛḝẹẻẽếềểễệ fƒᵮᶂḟꞙ gĝğġģǥǧǵɠᶃḡꞡ hĥħȟḣḥḧḩḫẖⱨꞕ iìíîïĩīĭįǐȉȋɨᶖḭḯỉị jĵǰɉ kķƙǩᶄḱḳḵⱪꝁ lĺļľŀłƚḷḹḻḽⱡ mᵯḿṁṃ nñńņňʼnǹᵰᶇṅṇṉṋꞥ oòóôõöøōŏőơǒǫǭǿȍȏȫȭȯȱɵṍṏṑṓọỏốồổỗộớờởỡợ pƥᵱᵽᶈṕṗ qɋʠ rŕŗřȑȓɍɽᵲᵳᶉṛṝṟꞧ sśŝşšșȿᵴᶊṡṣṥṧṩꞩ tţťŧƫƭțʈᵵṫṭṯṱẗⱦ uùúûüũūŭůűųǚǖưǔǘǜȕȗʉᵾᶙṳṵṷṹṻụủứừửữự vʋᶌṽṿ wŵẁẃẅẇẉẘ xẋẍ yýÿŷƴȳɏẏẙỳỵỷỹ zźżžƶᵶᶎẑẓẕⱬ"