diff --git a/src/platform/shm_linux.cpp b/src/platform/shm_linux.cpp index a019eb9..706a37d 100644 --- a/src/platform/shm_linux.cpp +++ b/src/platform/shm_linux.cpp @@ -134,9 +134,8 @@ void release(id_t id) { auto ii = static_cast(id); if (ii->mem_ == nullptr || ii->size_ == 0) { ipc::error("fail release: invalid id (mem = %p, size = %zd)\n", ii->mem_, ii->size_); - return; } - if (acc_of(ii->mem_, ii->size_).fetch_sub(1, std::memory_order_acquire) == 1) { + else if (acc_of(ii->mem_, ii->size_).fetch_sub(1, std::memory_order_acquire) == 1) { ::munmap(ii->mem_, ii->size_); ::shm_unlink(ii->name_.c_str()); } diff --git a/src/platform/shm_win.cpp b/src/platform/shm_win.cpp index afb3bb2..3e1408c 100644 --- a/src/platform/shm_win.cpp +++ b/src/platform/shm_win.cpp @@ -94,14 +94,12 @@ void release(id_t id) { auto ii = static_cast(id); if (ii->mem_ == nullptr || ii->size_ == 0) { ipc::error("fail release: invalid id (mem = %p, size = %zd)\n", ii->mem_, ii->size_); - return; } + else ::UnmapViewOfFile(static_cast(ii->mem_)); if (ii->h_ == NULL) { ipc::error("fail release: invalid id (h = null)\n"); - return; } - ::UnmapViewOfFile(static_cast(ii->mem_)); - ::CloseHandle(ii->h_); + else ::CloseHandle(ii->h_); mem::free(ii); } diff --git a/src/shm.cpp b/src/shm.cpp index 71e3a2a..2b3f8c2 100644 --- a/src/shm.cpp +++ b/src/shm.cpp @@ -65,12 +65,10 @@ bool handle::acquire(char const * name, std::size_t size, unsigned mode) { } void handle::release() { - if (!valid()) return; shm::release(detach()); } void* handle::get() const { - if (!valid()) return nullptr; return impl(p_)->m_; } @@ -82,7 +80,6 @@ void handle::attach(id_t id) { } id_t handle::detach() { - if (!valid()) return nullptr; auto old = impl(p_)->id_; impl(p_)->id_ = nullptr; impl(p_)->m_ = nullptr;