diff options
author | Takashi Yano <takashi.yano@nifty.ne.jp> | 2024-10-20 00:59:51 +0900 |
---|---|---|
committer | Takashi Yano <takashi.yano@nifty.ne.jp> | 2024-10-31 15:34:32 +0900 |
commit | f9cc21dc001acc2c90cfdb170c4bdd50f76770ea (patch) | |
tree | 991256e208b62c5266a9e51fedc27096c815ee3e | |
parent | 5e6eb2f200ce1c3ae7ae25140074bd37bc440aae (diff) | |
download | newlib-f9cc21dc001acc2c90cfdb170c4bdd50f76770ea.zip newlib-f9cc21dc001acc2c90cfdb170c4bdd50f76770ea.tar.gz newlib-f9cc21dc001acc2c90cfdb170c4bdd50f76770ea.tar.bz2 |
Cygwin: lockf: Fix adding a new lock over multiple locks
Previously, adding a new lock by lockf() over multiple existing locks
failed. This is due to a bug that lf_setlock() tries to create a lock
that has already been created. This patch fixes the issue.
Addresses: https://cygwin.com/pipermail/cygwin/2024-October/256528.html
Fixes: a998dd705576 ("* flock.cc: Implement all advisory file locking here.")
Reported-by: Christian Franke <Christian.Franke@t-online.de>
Reviewed-by: Corinna Vinschen <corinna@vinschen.de>
Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
-rw-r--r-- | winsup/cygwin/flock.cc | 7 | ||||
-rw-r--r-- | winsup/cygwin/release/3.5.5 | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc index 0f1efa0..5550b3a 100644 --- a/winsup/cygwin/flock.cc +++ b/winsup/cygwin/flock.cc @@ -1454,13 +1454,14 @@ lf_setlock (lockf_t *lock, inode_t *node, lockf_t **clean, HANDLE fhdl) /* * Add the new lock before overlap. */ - if (needtolink) { + if (needtolink) + { *prev = lock; lock->lf_next = overlap; - } + lock->create_lock_obj (); + } overlap->lf_start = lock->lf_end + 1; lf_wakelock (overlap, fhdl); - lock->create_lock_obj (); overlap->create_lock_obj (); break; } diff --git a/winsup/cygwin/release/3.5.5 b/winsup/cygwin/release/3.5.5 index bcc2c66..ca96edf 100644 --- a/winsup/cygwin/release/3.5.5 +++ b/winsup/cygwin/release/3.5.5 @@ -12,3 +12,7 @@ Fixes: Addresses: https://sourceware.org/pipermail/cygwin/2024-September/256468.html - Fix timer_delete() return value which always indicated failure. + +- Fix lockf() error which occurs when adding a new lock over multiple + locks. + Addresses: https://cygwin.com/pipermail/cygwin/2024-October/256528.html |