// Check that free hook doesn't conflict with Realloc.
// RUN: %clangxx_asan -O2 %s -o %t
// RUN: %run %t 2>&1 | FileCheck %s

#include <stdlib.h>
#include <unistd.h>
#include <sanitizer/allocator_interface.h>

static void *glob_ptr;

extern "C" {
void __sanitizer_free_hook(const volatile void *ptr) {
  if (ptr == glob_ptr) {
    *(int*)ptr = 0;
    write(1, "FreeHook\n", sizeof("FreeHook\n"));
  }
}
}

int main() {
  int *x = (int*)malloc(100);
  x[0] = 42;
  glob_ptr = x;
  int *y = (int*)realloc(x, 200);
  // Verify that free hook was called and didn't spoil the memory.
  if (y[0] != 42) {
    _exit(1);
  }
  write(1, "Passed\n", sizeof("Passed\n"));
  free(y);
  // CHECK: FreeHook
  // CHECK: Passed
  return 0;
}
