// RUN: %clangxx_scudo %s -o %t
// RUN: not %run %t malloc   2>&1 | FileCheck %s
// RUN: not %run %t new      2>&1 | FileCheck %s
// RUN: not %run %t newarray 2>&1 | FileCheck %s
// RUN: not %run %t memalign 2>&1 | FileCheck %s

// Tests double-free error on pointers allocated with different allocation
// functions.

#include <assert.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char **argv)
{
  assert(argc == 2);
  if (!strcmp(argv[1], "malloc")) {
    void *p = malloc(sizeof(int));
    assert(p);
    free(p);
    free(p);
  }
  if (!strcmp(argv[1], "new")) {
    int *p = new int;
    assert(p);
    delete p;
    delete p;
  }
  if (!strcmp(argv[1], "newarray")) {
    int *p = new int[8];
    assert(p);
    delete[] p;
    delete[] p;
  }
  if (!strcmp(argv[1], "memalign")) {
    void *p = nullptr;
    posix_memalign(&p, 0x100, sizeof(int));
    assert(p);
    free(p);
    free(p);
  }
  return 0;
}

// CHECK: ERROR: invalid chunk state
