ClickHouse/libs/libcommon/src/mremap.cpp
proller caf83a650e libs: compiling with msvc2017 (#1996)
* Allow use bundled *ssl library

* fix

* Add submodule

* Fixes

* fix

* fixes

* fixes

* fix

* fix

* update poco

* fix warnings

* fix

* fix

* Build fixes

* Build fixes

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* add bat

* no zookeeper in dbms

* update boost

* fixes

* fixes

* fix

* fix

* fix

* fix

* try fix

* try fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* fix

* Better

* fix

* dh verbose

* fix

* dh verbose

* fix

* clean

* Update LocalDate.h

* Update LocalDateTime.h
2018-03-23 19:05:14 +03:00

49 lines
956 B
C++

#include <common/mremap.h>
#include <cstddef>
#include <cstdlib>
#include <cstring>
#include <errno.h>
#if defined(MREMAP_FIXED)
// we already have implementation (linux)
#else
void * mremap(
void * old_address, size_t old_size, size_t new_size, int flags, int mmap_prot, int mmap_flags, int mmap_fd, off_t mmap_offset)
{
/// No actual shrink
if (new_size < old_size)
return old_address;
if (!(flags & MREMAP_MAYMOVE))
{
errno = ENOMEM;
return nullptr;
}
#if _MSC_VER
void * new_address = ::operator new(new_size);
#else
void * new_address = mmap(nullptr, new_size, mmap_prot, mmap_flags, mmap_fd, mmap_offset);
if (MAP_FAILED == new_address)
{
return MAP_FAILED;
}
#endif
memcpy(new_address, old_address, old_size);
#if _MSC_VER
delete old_address;
#else
if (munmap(old_address, old_size))
{
abort();
}
#endif
return new_address;
}
#endif