Commit 4b8d258c authored by Max Kellermann's avatar Max Kellermann

lib/nfs/Connection: fix crash while canceling a failing Open()

The method NfsConnection::CancellableCallback::Callback() will always invoke NfsConnection::Close() on the file handle, even if the void pointer is not a nfsfh. This can happen if the Open() was not successful, e.g. when the file does not exist.
parent 3c29aa62
ver 0.19.7 (not yet released) ver 0.19.7 (not yet released)
* input
- nfs: fix crash while canceling a failing file open operation
* playlist * playlist
- don't skip non-existent songs in "listplaylist" - don't skip non-existent songs in "listplaylist"
* fix memory allocator bug on Windows * fix memory allocator bug on Windows
......
...@@ -156,8 +156,10 @@ NfsConnection::CancellableCallback::Callback(int err, void *data) ...@@ -156,8 +156,10 @@ NfsConnection::CancellableCallback::Callback(int err, void *data)
allocated file handle immediately */ allocated file handle immediately */
assert(close_fh == nullptr); assert(close_fh == nullptr);
if (err >= 0) {
struct nfsfh *fh = (struct nfsfh *)data; struct nfsfh *fh = (struct nfsfh *)data;
connection.Close(fh); connection.Close(fh);
}
} else if (close_fh != nullptr) } else if (close_fh != nullptr)
connection.DeferClose(close_fh); connection.DeferClose(close_fh);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment