Close the fd in the close method and invalidated it. Don't try
to close a second time when deallocating.
#endif /* MS_WINDOWS */
#ifdef UNIX
- close(m_obj->fd);
+ if (m_obj->fd >= 0)
+ (void) close(m_obj->fd);
if (m_obj->data!=NULL) {
msync(m_obj->data, m_obj->size, MS_SYNC);
munmap(m_obj->data, m_obj->size);
#endif /* MS_WINDOWS */
#ifdef UNIX
+ (void) close(self->fd);
+ self->fd = -1;
if (self->data != NULL) {
munmap(self->data, self->size);
self->data = NULL;