Mercurial > vim
changeset 26589:22896e358a90 v8.2.3824
patch 8.2.3824: no ASAN support for MSVC
Commit: https://github.com/vim/vim/commit/6df0f2759d12ec0bc999b2963ecea4387a2bc516
Author: Yegappan Lakshmanan <yegappan@yahoo.com>
Date: Thu Dec 16 13:06:10 2021 +0000
patch 8.2.3824: no ASAN support for MSVC
Problem: No ASAN support for MSVC.
Solution: Add ASAN support and fix a coupld of uncovered problems. (Yegappan
Lakshmanan, closes #9357)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 16 Dec 2021 14:15:02 +0100 |
parents | c929ca14d8a9 |
children | 9eb413075ee4 |
files | src/Make_mvc.mak src/findfile.c src/os_mswin.c src/testdir/test_fnamemodify.vim src/version.c |
diffstat | 5 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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"
--- 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
--- 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] == '\\')));
--- 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