]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Move back to malloc on !OpenBSD. Doing mmap/munmap all the time hurts too much. 7583/head
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 15 Mar 2019 11:23:00 +0000 (12:23 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 15 Mar 2019 11:23:00 +0000 (12:23 +0100)
pdns/lazy_allocator.hh

index 4851687ba6f3c1079533b0325119f70e99b7c14c..68ba53619ecf14ac7ce932b1bb27fabad475ca69 100644 (file)
@@ -43,16 +43,29 @@ struct lazy_allocator {
 
     pointer
     allocate (size_type const n) {
+#ifdef __OpenBSD__
         void *p = mmap(nullptr, n * sizeof(value_type),
           PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_STACK, -1, 0);
         if (p == MAP_FAILED)
           throw std::bad_alloc();
         return static_cast<pointer>(p);
+#else
+        return static_cast<pointer>(::operator new (n * sizeof(value_type)));
+#endif
     }
 
     void
     deallocate (pointer const ptr, size_type const n) noexcept {
+#ifdef __OpenBSD__
         munmap(ptr, n * sizeof(value_type));
+#else
+#if defined(__cpp_sized_deallocation) &&  (__cpp_sized_deallocation >= 201309)
+        ::operator delete (ptr, n * sizeof(value_type));
+#else
+        (void) n;
+        ::operator delete (ptr);
+#endif
+#endif
     }
 
     void construct (T*) const noexcept {}