patch 8.2.0132: script may be re-used when deleting and creating a new one
Problem: Script may be re-used when deleting and creating a new one.
Solution: When the inode matches, also check the file name.
diff --git a/src/scriptfile.c b/src/scriptfile.c
index a574bf6..78a80d0 100644
--- a/src/scriptfile.c
+++ b/src/scriptfile.c
@@ -1249,18 +1249,20 @@
--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)
{