From: Sebastian Lackner Subject: ntdll: Assert when trying to replace an exiting file descriptor in fd_cache. Message-Id: <54F27249.3070708@fds-team.de> Date: Sun, 01 Mar 2015 02:58:33 +0100 The condition "prev_fd != -1" should never be true. If this is the case then something is going terrible wrong, and it is better to assert instead of just closing the file descriptor. --- dlls/ntdll/server.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) From 950a91312423f8b263b4384ad53d32520f34e9d0 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Sun, 1 Mar 2015 02:36:45 +0100 Subject: ntdll: Assert when trying to replace an exiting file descriptor in fd_cache. --- dlls/ntdll/server.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c index aabda4f..4866ac9 100644 --- a/dlls/ntdll/server.c +++ b/dlls/ntdll/server.c @@ -820,7 +820,6 @@ static BOOL add_fd_to_cache( HANDLE handle, int fd, enum server_fd_type type, unsigned int access, unsigned int options ) { unsigned int entry, idx = handle_to_index( handle, &entry ); - int prev_fd; if (entry >= FD_CACHE_ENTRIES) { @@ -840,11 +839,11 @@ static BOOL add_fd_to_cache( HANDLE handle, int fd, enum server_fd_type type, } } /* store fd+1 so that 0 can be used as the unset value */ - prev_fd = interlocked_xchg( &fd_cache[entry][idx].fd, fd + 1 ) - 1; + fd = interlocked_xchg( &fd_cache[entry][idx].fd, fd + 1 ); fd_cache[entry][idx].type = type; fd_cache[entry][idx].access = access; fd_cache[entry][idx].options = options; - if (prev_fd != -1) close( prev_fd ); + assert( !fd ); return TRUE; } -- 2.3.0