]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 27_io / ios_base / storage / 11584.cc
CommitLineData
6d0e8a55
DE
1// { dg-xfail-run-if "AIX operator new" { powerpc-ibm-aix* } }
2
2a837cf8
JQ
3// 2004-01-25 jlquinn@gcc.gnu.org
4
7adcbafe 5// Copyright (C) 2004-2022 Free Software Foundation, Inc.
2a837cf8
JQ
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
748086b7 10// Free Software Foundation; either version 3, or (at your option)
2a837cf8
JQ
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
748086b7
JJ
19// with this library; see the file COPYING3. If not see
20// <http://www.gnu.org/licenses/>.
2a837cf8
JQ
21
22// 27.4.2.5 ios_base storage functions
23
24#include <cstdlib>
25#include <new>
62b21ea0 26#include <iostream>
2a837cf8
JQ
27#include <testsuite_hooks.h>
28
29int new_fails;
30
03d5d0c3 31void* operator new(std::size_t n, const std::nothrow_t&) throw()
2a837cf8 32{
62b21ea0 33 if (new_fails)
03d5d0c3 34 return 0;
62b21ea0 35 return malloc(n);
2a837cf8 36}
03d5d0c3
VV
37void* operator new[] (std::size_t n, const std::nothrow_t& ntt) throw()
38{ return operator new(n, ntt); }
2a837cf8 39
62b21ea0
BK
40void operator delete (void *p) throw() { free(p); }
41void operator delete[] (void *p) throw() { operator delete(p); }
2a837cf8
JQ
42
43int main ()
44{
e7c59a0e
PC
45 const int i = std::ios::xalloc();
46 VERIFY( i >= 0 );
62b21ea0
BK
47
48 new_fails = 1;
49
50 // Successive accesses to failure storage clears to zero.
e7c59a0e
PC
51 std::cout.iword(100) = 69;
52 VERIFY( std::cout.iword(100) == 0 );
62b21ea0
BK
53
54 // Access to pword failure storage shouldn't clear iword pword storage.
55 long& lr = std::cout.iword(100);
e7c59a0e 56 lr = 69;
62b21ea0
BK
57
58 void* pv = std::cout.pword(100);
e7c59a0e
PC
59 VERIFY( pv == 0 );
60 VERIFY( lr == 69 );
62b21ea0
BK
61
62 return 0;
2a837cf8
JQ
63}
64