diff options
author | Yegappan Lakshmanan <yegappan@yahoo.com> | 2021-12-16 13:06:10 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2021-12-16 13:06:10 +0000 |
commit | 6df0f2759d12ec0bc999b2963ecea4387a2bc516 (patch) | |
tree | e0123e1cb1c5270f76f16a4da69c74b903eff634 /src | |
parent | 6ecf58b0d7d9b8fbba780d19d2e6c0f227df715b (diff) | |
download | vim-git-6df0f2759d12ec0bc999b2963ecea4387a2bc516.tar.gz |
patch 8.2.3824: no ASAN support for MSVCv8.2.3824
Problem: No ASAN support for MSVC.
Solution: Add ASAN support and fix a coupld of uncovered problems. (Yegappan
Lakshmanan, closes #9357)
Diffstat (limited to 'src')
-rw-r--r-- | src/Make_mvc.mak | 8 | ||||
-rw-r--r-- | src/findfile.c | 2 | ||||
-rw-r--r-- | src/os_mswin.c | 2 | ||||
-rw-r--r-- | src/testdir/test_fnamemodify.vim | 1 | ||||
-rw-r--r-- | src/version.c | 2 |
5 files changed, 14 insertions, 1 deletions
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak index 6be13fba6..2417d7727 100644 --- a/src/Make_mvc.mak +++ b/src/Make_mvc.mak @@ -147,6 +147,8 @@ # # Static Code Analysis: ANALYZE=yes (works with VS2012 or later) # +# Address Sanitizer: ASAN=yes (works with VS2019 or later) +# # You can combine any of these interfaces # # Example: To build the non-debug, GUI version with Perl interface: @@ -662,6 +664,12 @@ CFLAGS = $(CFLAGS) -DHAVE_STDINT_H CFLAGS = $(CFLAGS) /analyze !endif +# Address Sanitizer (ASAN) generally available starting with VS2019 version +# 16.9 +!if ("$(ASAN)" == "yes") && ($(MSVC_MAJOR) >= 14) +CFLAGS = $(CFLAGS) /fsanitize=address +!endif + !ifdef NODEBUG VIM = vim ! if "$(OPTIMIZE)" == "SPACE" diff --git a/src/findfile.c b/src/findfile.c index 4f457b938..ab5977697 100644 --- a/src/findfile.c +++ b/src/findfile.c @@ -2653,7 +2653,7 @@ simplify_filename(char_u *filename) p = filename; # ifdef BACKSLASH_IN_FILENAME - if (p[1] == ':') // skip "x:" + if (p[0] != NUL && p[1] == ':') // skip "x:" p += 2; # endif diff --git a/src/os_mswin.c b/src/os_mswin.c index 360c456e5..b6393db5a 100644 --- a/src/os_mswin.c +++ b/src/os_mswin.c @@ -389,6 +389,8 @@ mch_isFullName(char_u *fname) // Another way to check is to use mch_FullName() and see if the result is // the same as the name or mch_FullName() fails. However, this has quite a // bit of overhead, so let's not do that. + if (*fname == NUL) + return TRUE; return ((ASCII_ISALPHA(fname[0]) && fname[1] == ':' && (fname[2] == '/' || fname[2] == '\\')) || (fname[0] == fname[1] && (fname[0] == '/' || fname[0] == '\\'))); diff --git a/src/testdir/test_fnamemodify.vim b/src/testdir/test_fnamemodify.vim index 7882f3cb0..dfe322afd 100644 --- a/src/testdir/test_fnamemodify.vim +++ b/src/testdir/test_fnamemodify.vim @@ -93,6 +93,7 @@ func Test_fnamemodify_er() call assert_equal('b.c', fnamemodify('a.b.c.d.e', ':r:r:e:e:e')) call assert_equal('b.c', fnamemodify('a.b.c.d.e', ':r:r:e:e:e:e')) + call assert_equal('', fnamemodify('', ':p:t')) call assert_equal('', fnamemodify(test_null_string(), test_null_string())) endfunc diff --git a/src/version.c b/src/version.c index 0e7a67dfc..6576a55bd 100644 --- a/src/version.c +++ b/src/version.c @@ -750,6 +750,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 3824, +/**/ 3823, /**/ 3822, |