allocators_sanity.cc revision 5d71de26cedae3dafc17449fe0182045c0bd20e8
195640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org// RUN: %clang_cl_asan -O0 %s -Fe%t
295640e3a20adea634b4df4ccf8c93f411184c438joi@chromium.org// RUN: %run %t | FileCheck %s
301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <malloc.h>
501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org#include <stdio.h>
601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.orgint main() {
801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  int *p = (int*)malloc(1024 * sizeof(int));
901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p[512] = 0;
1001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  free(p);
1101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
1201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p = (int*)malloc(128);
1301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p = (int*)realloc(p, 2048 * sizeof(int));
1401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p[1024] = 0;
1501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  free(p);
1601fadb72b6e94e6511eaffd1874a8cc095f098a7joi@chromium.org
1701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p = (int*)calloc(16, sizeof(int));
1801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  if (p[8] != 0)
1901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org    return 1;
2001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p[15]++;
2101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  if (16 * sizeof(int) != _msize(p))
2201fadb72b6e94e6511eaffd1874a8cc095f098a7joi@chromium.org    return 2;
2301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  free(p);
2401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p = new int;
2601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  *p = 42;
2701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  delete p;
2801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
2901b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p = new int[42];
3001b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  p[15]++;
3101b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  delete [] p;
3201b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3301b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  printf("All ok\n");
3401b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org// CHECK: All ok
3501b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org
3601b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org  return 0;
3701b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org}
3801b3bc768461bd303bff39f8cd1663682254e407joi@chromium.org