blob: 0f04adea2bb71b740d14a1c6df52cc380f62a15d [file]
/*
* 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