xref: /dflybsd-src/contrib/gcc-8.0/libstdc++-v3/libsupc++/bad_array_length.cc (revision 38fd149817dfbff97799f62fcb70be98c4e32523)
1*38fd1498Szrj // Copyright (C) 2013-2018 Free Software Foundation, Inc.
2*38fd1498Szrj //
3*38fd1498Szrj // This file is part of GCC.
4*38fd1498Szrj //
5*38fd1498Szrj // GCC is free software; you can redistribute it and/or modify
6*38fd1498Szrj // it under the terms of the GNU General Public License as published by
7*38fd1498Szrj // the Free Software Foundation; either version 3, or (at your option)
8*38fd1498Szrj // any later version.
9*38fd1498Szrj 
10*38fd1498Szrj // GCC is distributed in the hope that it will be useful,
11*38fd1498Szrj // but WITHOUT ANY WARRANTY; without even the implied warranty of
12*38fd1498Szrj // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*38fd1498Szrj // GNU General Public License for more details.
14*38fd1498Szrj 
15*38fd1498Szrj // Under Section 7 of GPL version 3, you are granted additional
16*38fd1498Szrj // permissions described in the GCC Runtime Library Exception, version
17*38fd1498Szrj // 3.1, as published by the Free Software Foundation.
18*38fd1498Szrj 
19*38fd1498Szrj // You should have received a copy of the GNU General Public License and
20*38fd1498Szrj // a copy of the GCC Runtime Library Exception along with this program;
21*38fd1498Szrj // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22*38fd1498Szrj // <http://www.gnu.org/licenses/>.
23*38fd1498Szrj 
24*38fd1498Szrj #include <new>
25*38fd1498Szrj 
26*38fd1498Szrj namespace std
27*38fd1498Szrj {
28*38fd1498Szrj // From N3639.  This was voted in and then back out of C++14, and is now
29*38fd1498Szrj // just here for backward link compatibility with code built with 4.9.
30*38fd1498Szrj class bad_array_length : public bad_alloc
31*38fd1498Szrj {
32*38fd1498Szrj public:
bad_array_length()33*38fd1498Szrj   bad_array_length() throw() { };
34*38fd1498Szrj 
35*38fd1498Szrj   // This declaration is not useless:
36*38fd1498Szrj   // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118
37*38fd1498Szrj   virtual ~bad_array_length() throw();
38*38fd1498Szrj 
39*38fd1498Szrj   // See comment in eh_exception.cc.
40*38fd1498Szrj   virtual const char* what() const throw();
41*38fd1498Szrj };
42*38fd1498Szrj 
~bad_array_length()43*38fd1498Szrj bad_array_length::~bad_array_length() _GLIBCXX_USE_NOEXCEPT { }
44*38fd1498Szrj 
45*38fd1498Szrj const char*
what() const46*38fd1498Szrj bad_array_length::what() const _GLIBCXX_USE_NOEXCEPT
47*38fd1498Szrj { return "std::bad_array_length"; }
48*38fd1498Szrj 
49*38fd1498Szrj } // namespace std
50*38fd1498Szrj 
51*38fd1498Szrj namespace __cxxabiv1 {
52*38fd1498Szrj 
53*38fd1498Szrj extern "C" void
__cxa_throw_bad_array_length()54*38fd1498Szrj __cxa_throw_bad_array_length ()
55*38fd1498Szrj { _GLIBCXX_THROW_OR_ABORT(std::bad_array_length()); }
56*38fd1498Szrj 
57*38fd1498Szrj } // namespace __cxxabiv1
58