summaryrefslogtreecommitdiff
path: root/libsanitizer/lsan/lsan_allocator.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libsanitizer/lsan/lsan_allocator.cc')
-rw-r--r--libsanitizer/lsan/lsan_allocator.cc6
1 files changed, 5 insertions, 1 deletions
diff --git a/libsanitizer/lsan/lsan_allocator.cc b/libsanitizer/lsan/lsan_allocator.cc
index ce47dfcd215a..3e81ebef2a7c 100644
--- a/libsanitizer/lsan/lsan_allocator.cc
+++ b/libsanitizer/lsan/lsan_allocator.cc
@@ -141,7 +141,11 @@ uptr PointsIntoChunk(void* p) {
if (addr < chunk) return 0;
ChunkMetadata *m = Metadata(reinterpret_cast<void *>(chunk));
CHECK(m);
- if (m->allocated && addr < chunk + m->requested_size)
+ if (!m->allocated)
+ return 0;
+ if (addr < chunk + m->requested_size)
+ return chunk;
+ if (IsSpecialCaseOfOperatorNew0(chunk, m->requested_size, addr))
return chunk;
return 0;
}