diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-01-19 20:18:09 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-01-19 20:18:09 +0100 |
commit | ca33eb256eb910af05e8c9852bc9f716cece1f5c (patch) | |
tree | 0d076fc09027cdd997056b00c83fd7428455404c /src/scriptfile.c | |
parent | 479950f6c9aee4806f28a2b2fe5471e18a034cff (diff) | |
download | vim-git-ca33eb256eb910af05e8c9852bc9f716cece1f5c.tar.gz |
patch 8.2.0132: script may be re-used when deleting and creating a new onev8.2.0132
Problem: Script may be re-used when deleting and creating a new one.
Solution: When the inode matches, also check the file name.
Diffstat (limited to 'src/scriptfile.c')
-rw-r--r-- | src/scriptfile.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/src/scriptfile.c b/src/scriptfile.c index a574bf665..78a80d02b 100644 --- a/src/scriptfile.c +++ b/src/scriptfile.c @@ -1249,18 +1249,20 @@ do_source( --current_sctx.sc_sid) { si = &SCRIPT_ITEM(current_sctx.sc_sid); - if (si->sn_name != NULL - && ( + if (si->sn_name != NULL) + { # ifdef UNIX - // Compare dev/ino when possible, it catches symbolic - // links. Also compare file names, the inode may change - // when the file was edited. - ((stat_ok && si->sn_dev_valid) - && (si->sn_dev == st.st_dev - && si->sn_ino == st.st_ino)) || + // Compare dev/ino when possible, it catches symbolic links. Also + // compare file names, the inode may change when the file was + // edited or it may be re-used for another script (esp. in tests). + if ((stat_ok && si->sn_dev_valid) + && (si->sn_dev != st.st_dev || si->sn_ino != st.st_ino)) + continue; # endif - fnamecmp(si->sn_name, fname_exp) == 0)) - break; + if (fnamecmp(si->sn_name, fname_exp) == 0) + // Found it! + break; + } } if (current_sctx.sc_sid == 0) { |