]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/18_support/50594.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 18_support / 50594.cc
CommitLineData
578f0234 1// { dg-options "-fwhole-program" }
c0f6f2b4 2// { dg-additional-options "-static-libstdc++" { target *-*-mingw* } }
6d0e8a55 3// { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
578f0234 4
a5544970 5// Copyright (C) 2011-2019 Free Software Foundation, Inc.
578f0234
PC
6//
7// This file is part of the GNU ISO C++ Library. This library is free
8// software; you can redistribute it and/or modify it under the
9// terms of the GNU General Public License as published by the
10// Free Software Foundation; either version 3, or (at your option)
11// any later version.
12
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16// GNU General Public License for more details.
17
18// You should have received a copy of the GNU General Public License along
19// with this library; see the file COPYING3. If not see
20// <http://www.gnu.org/licenses/>.
21
22#include <new>
23#include <string>
24#include <cstdlib>
25#include <testsuite_hooks.h>
26
27bool user_new_called;
28bool user_delete_called;
29
30void* operator new(std::size_t n)
734f5023 31#if __cplusplus < 201103L
578f0234
PC
32 throw(std::bad_alloc)
33#endif
34{
35 user_new_called = true;
36
37 void* p = std::malloc(n);
38
39 if (!p)
40 throw std::bad_alloc();
41
42 return p;
43}
44
45void operator delete(void* p)
734f5023 46#if __cplusplus >= 201103L
578f0234
PC
47 noexcept
48#else
49 throw()
50#endif
51{
52 user_delete_called = true;
53
54 std::free(p);
55}
56
57// libstdc++/50594
58void test01()
59{
578f0234 60 {
34a2b755 61 std::string s = "Hello World, this is not a small string.";
578f0234
PC
62 }
63
64 VERIFY( user_new_called );
65 VERIFY( user_delete_called );
66}
67
68int main()
69{
70 test01();
71 return 0;
72}