| /* |
| * Copyright 2026 Google LLC |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| #include "tools/partition_alloc/TestSupport.h" |
| |
| #include <partition_alloc/buildflags.h> |
| |
| #if PA_BUILDFLAG(USE_ALLOCATOR_SHIM) |
| #include <partition_alloc/shim/allocator_shim.h> |
| #include <partition_alloc/shim/allocator_shim_default_dispatch_to_partition_alloc.h> |
| #endif |
| |
| #if PA_BUILDFLAG(ENABLE_DANGLING_RAW_PTR_CHECKS) |
| #include <partition_alloc/dangling_raw_ptr_checks.h> |
| #include "include/core/SkTypes.h" |
| #endif |
| |
| namespace skiatest { |
| |
| void InitializePartitionAllocForTesting() { |
| #if PA_BUILDFLAG(USE_ALLOCATOR_SHIM) |
| allocator_shim::ConfigurePartitionsForTesting(); |
| allocator_shim::internal::PartitionAllocMalloc::Allocator()->EnableThreadCacheIfSupported(); |
| #endif |
| } |
| |
| void InitializeDanglingPointerChecksForTesting() { |
| #if PA_BUILDFLAG(ENABLE_DANGLING_RAW_PTR_CHECKS) |
| // TODO(351867706): Similar to Chrome, record a stacktrace during free when |
| // a pointer becomes dangling, and a stacktrace when the dangling pointer |
| // is released. Join the two and present them to Skia developers so they |
| // know both the location of free and the location of the dangling pointer. |
| partition_alloc::SetDanglingRawPtrReleasedFn([](uintptr_t ptr) { |
| SK_ABORT("DanglingPointerDetector: A pointer was dangling!"); |
| }); |
| #endif |
| } |
| |
| } // namespace skiatest |