// { dg-do run { xfail *-*-* } }
// XFAILed until PR2123 is fixed
// PR 11228: array operator new, with zero-initialization and a variable sized array.
// Regression test for PR 
// Author: Matt Austern <austern@apple.com>


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

double* allocate(int n)
{
  void *p;
  p = malloc(n * sizeof (double));
  memset (p, 0xff, n * sizeof(double));
  return new (p) double[n]();
}

int main()
{
  const int n = 17;
  double* p = allocate(n);
  for (int i = 0; i < n; ++i)
    if (p[i] != 0.0)
      abort ();
  exit (0);
}
