annotate src/GvimExt/gvimext_ming.rc @ 34854:97b5457962ed v9.1.0296

patch 9.1.0296: regexp: engines do not handle case-folding well Commit: https://github.com/vim/vim/commit/7a27c108e0509f3255ebdcb6558e896c223e4d23 Author: Christian Brabandt <cb@256bit.org> Date: Tue Apr 9 22:53:19 2024 +0200 patch 9.1.0296: regexp: engines do not handle case-folding well Problem: Regex engines do not handle case-folding well Solution: Correctly calculate byte length of characters to skip When the regexp engine compares two utf-8 codepoints case insensitively it may match an adjacent character, because it assumes it can step over as many bytes as the pattern contains. This however is not necessarily true because of case-folding, a multi-byte UTF-8 character can be considered equal to some single-byte value. Let's consider the pattern '?' and the string 's'. When comparing and ignoring case, the single character 's' matches, and since it matches Vim will try to step over the match (by the amount of bytes of the pattern), assuming that since it matches, the length of both strings is the same. However in that case, it should only step over the single byte value 's' so by 1 byte and try to start matching after it again. So for the backtracking engine we need to ensure: - we try to match the correct length for the pattern and the text - in case of a match, we step over it correctly The same thing can happen for the NFA engine, when skipping to the next character to test for a match. We are skipping over the regstart pointer, however we do not consider the case that because of case-folding we may need to adjust the number of bytes to skip over. So this needs to be adjusted in find_match_text() as well. A related issue turned out, when prog->match_text is actually empty. In that case we should try to find the next match and skip this condition. fixes: #14294 closes: #14433 Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 09 Apr 2024 23:00:08 +0200
parents 4e2284e71352
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
1 #include <windows.h>
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
2 #define xstr(x) str(x)
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
3 #define str(x) #x
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
4 VS_VERSION_INFO VERSIONINFO
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
5 FILEVERSION 1,0,0,1
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
6 PRODUCTVERSION 1,0,0,1
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
7 FILEFLAGSMASK 0x3fL
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
8 #ifdef _DEBUG
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
9 FILEFLAGS 0x3L
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
10 #else
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
11 FILEFLAGS 0x2L
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
12 #endif
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
13 FILEOS 0x4L
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
14 FILETYPE VFT_DLL
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
15 FILESUBTYPE 0x0L
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
16 {
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
17 BLOCK "StringFileInfo"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
18 {
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
19 BLOCK "040904b0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
20 {
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
21 VALUE "Comments", "Developed using COM architecture!\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
22 VALUE "CompanyName", "Tianmiao Hu's Developer Studio\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
23 VALUE "FileDescription", "A small project for the context menu of gvim!\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
24 VALUE "FileVersion", "1, 0, 0, 1\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
25 VALUE "InternalName", "gvim right-click menu extension\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
26 VALUE "LegalCopyright", "Copyright © 1999 Tianmiao Hu\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
27 VALUE "LegalTrademarks", "Tianmiao Hu's Gvim Context Menu Extension\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
28 VALUE "OriginalFilename", "gvimext.dll\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
29 VALUE "PrivateBuild", "\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
30 VALUE "ProductName", "Tianmiao Hu's gvimext context menu extension\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
31 VALUE "ProductVersion", "1, 0, 0, 1\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
32
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
33 #if defined(__GNUC__)
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
34 VALUE "SpecialBuild", "Build With " "MingW " xstr(__GNUC__) "." xstr(__GNUC_MINOR__) "." xstr(__GNUC_PATCHLEVEL__) " on " __DATE__ " " __TIME__ "\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
35 #else
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
36 VALUE "SpecialBuild", "Unknown compiler\0"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
37
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
38 #endif
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
39 }
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
40 }
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
41 BLOCK "VarFileInfo"
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
42 {
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
43 VALUE "Translation", 0x409, 1200
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
44 }
4e2284e71352 updated for version 7.0002
vimboss
parents:
diff changeset
45 }