]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/socketengine_iocp.cpp
pedantic safe
[user/henk/code/inspircd.git] / src / socketengine_iocp.cpp
index eba88ad7ea1cebbda3cc66ed8e797c2ba9d15e57..66ae7f8ba9066459e9efc045ffb9e3b1f5c1e99d 100644 (file)
@@ -54,7 +54,10 @@ bool IOCPEngine::AddFd(EventHandler* eh)
 
        /* In range? */
        if ((*fake_fd < 0) || (*fake_fd > MAX_DESCRIPTORS))
+       {
+               delete fake_fd;
                return false;
+       }
 
        /* Already an entry here */
        if (ref[*fake_fd])
@@ -74,10 +77,6 @@ bool IOCPEngine::AddFd(EventHandler* eh)
        if (!CreateIoCompletionPort((HANDLE)eh->GetFd(), m_completionPort, completion_key, 0))
                return false;
 
-       /* set up binding, increase set size */
-       ref[*fake_fd] = eh;
-       ++CurrentSetSize;
-
        /* setup initial events */
        if(is_accept)
                PostAcceptEvent(eh);
@@ -102,6 +101,9 @@ bool IOCPEngine::AddFd(EventHandler* eh)
                return false;
        }
 
+       ++CurrentSetSize;
+       ref[*fake_fd] = eh;
+
        return true;
 }
 
@@ -116,9 +118,6 @@ bool IOCPEngine::DelFd(EventHandler* eh, bool force /* = false */)
                return false;
 
        int fd = eh->GetFd();
-       
-       if (!ref[*fake_fd])
-               return false;
 
        void* m_readEvent = NULL;
        void* m_writeEvent = NULL;