| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 4aaa843 commit f2159f2
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -608,7 +608,8 @@ class CompressionStream : public AsyncWrap, public ThreadPoolWork { | |||
| 608 | 608 | } | |
| 609 | 609 | ||
| 610 | 610 | static void* AllocForBrotli(void* data, size_t size) { | |
| 611 | - size += sizeof(size_t); | ||
| 611 | + constexpr size_t offset = std::max(sizeof(size_t), alignof(max_align_t)); | ||
| 612 | + size += offset; | ||
| 612 | 613 | CompressionStream* ctx = static_cast<CompressionStream*>(data); | |
| 613 | 614 | char* memory = UncheckedMalloc(size); | |
| 614 | 615 | if (memory == nullptr) [[unlikely]] { | |
@@ -617,15 +618,16 @@ class CompressionStream : public AsyncWrap, public ThreadPoolWork { | |||
| 617 | 618 | *reinterpret_cast<size_t*>(memory) = size; | |
| 618 | 619 | ctx->unreported_allocations_.fetch_add(size, | |
| 619 | 620 | std::memory_order_relaxed); | |
| 620 | - return memory + sizeof(size_t); | ||
| 621 | + return memory + offset; | ||
| 621 | 622 | } | |
| 622 | 623 | ||
| 623 | 624 | static void FreeForZlib(void* data, void* pointer) { | |
| 624 | 625 | if (pointer == nullptr) [[unlikely]] { | |
| 625 | 626 | return; | |
| 626 | 627 | } | |
| 627 | 628 | CompressionStream* ctx = static_cast<CompressionStream*>(data); | |
| 628 | - char* real_pointer = static_cast<char*>(pointer) - sizeof(size_t); | ||
| 629 | + constexpr size_t offset = std::max(sizeof(size_t), alignof(max_align_t)); | ||
| 630 | + char* real_pointer = static_cast<char*>(pointer) - offset; | ||
| 629 | 631 | size_t real_size = *reinterpret_cast<size_t*>(real_pointer); | |
| 630 | 632 | ctx->unreported_allocations_.fetch_sub(real_size, | |
| 631 | 633 | std::memory_order_relaxed); | |
| Back | FazBrowse Home | New Git URL |
0 commit comments