Skip to content

Commit 2adf88e

Browse files
committed
another attempt at fixing suspend_never
1 parent 9653034 commit 2adf88e

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

examples/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ if(PROJECT_IS_TOP_LEVEL)
1818
endif()
1919

2020
set(TODO stop_token) #-dk:TODO including that causes a linker error
21+
set(TODO suspend_never) #-dk:TODO including that causes ASAN errors
22+
2123
set(EXAMPLES
2224
allocator
2325
doc-just

examples/suspend_never.cpp

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,23 @@ void* operator new(std::size_t n) {
1515
std::cout << "global new(" << n << ")->" << p << "\n";
1616
return p;
1717
}
18-
void operator delete(void* ptr) noexcept { std::cout << "global operator delete()" << ptr << "\n"; }
18+
void operator delete(void* ptr) noexcept {
19+
std::cout << "global operator delete()" << ptr << "\n";
20+
std::free(ptr);
21+
}
1922

2023
int main() {
2124
struct resource : std::pmr::memory_resource {
22-
void* do_allocate(std::size_t n, std::size_t) override { return std::malloc(n); }
23-
void do_deallocate(void* p, std::size_t n, std::size_t) override { std::free(p); }
24-
bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override { return this == &other; }
25+
void* do_allocate(std::size_t n, std::size_t a) override {
26+
auto p{std::malloc(n)};
27+
std::cout << "resource::allocate(" << n << ", " << a << ") -> " << p << "\n";
28+
return p;
29+
}
30+
void do_deallocate(void* p, std::size_t n, std::size_t a) override {
31+
std::cout << "resource::deallocate(" << p << ", " << n << ", " << a << ")\n";
32+
std::free(p);
33+
}
34+
bool do_is_equal(const std::pmr::memory_resource& other) const noexcept override { return this == &other; }
2535
} res{};
2636

2737
ex::sync_wait(ex::write_env(

0 commit comments

Comments
 (0)