Fix stack test on arm32

The stack test puts a pointer to an allocation on the stack, checks
that there are no leaks, then lets it go out of scope and checks
that libmemunreachable can find a leak.  This works on arm64, but
on arm32 the pointer on the stack doesn't get overwitten and the
leak is not detected.  Rewrite the pointer to be NULL instead.

Test: memunreachable_test
Change-Id: I5959a34cbb572a5d8670270077a85d247a3a4880
This commit is contained in:
Colin Cross 2017-06-22 14:19:18 -07:00
parent f3ce8bc8ae
commit 76464d958b
1 changed files with 4 additions and 3 deletions

View File

@ -40,7 +40,8 @@ class HiddenPointer {
volatile uintptr_t ptr_;
};
static void Ref(void* ptr) {
// Trick the compiler into thinking a value on the stack is still referenced.
static void Ref(void** ptr) {
write(0, ptr, 0);
}
@ -58,14 +59,14 @@ TEST(MemunreachableTest, stack) {
{
void* ptr = hidden_ptr.Get();
Ref(ptr);
Ref(&ptr);
UnreachableMemoryInfo info;
ASSERT_TRUE(GetUnreachableMemory(info));
ASSERT_EQ(0U, info.leaks.size());
Ref(ptr);
ptr = nullptr;
}
{