| // { dg-options "-Wno-deprecated" } | 
 | // Copyright (C) 2003-2021 Free Software Foundation, Inc. | 
 | // | 
 | // This file is part of the GNU ISO C++ Library.  This library is free | 
 | // software; you can redistribute it and/or modify it under the | 
 | // terms of the GNU General Public License as published by the | 
 | // Free Software Foundation; either version 3, or (at your option) | 
 | // any later version. | 
 |  | 
 | // This library is distributed in the hope that it will be useful, | 
 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
 | // GNU General Public License for more details. | 
 |  | 
 | // You should have received a copy of the GNU General Public License along | 
 | // with this library; see the file COPYING3.  If not see | 
 | // <http://www.gnu.org/licenses/>. | 
 |  | 
 | #include <strstream> | 
 | #include <testsuite_hooks.h> | 
 |  | 
 | class Buf : public std::strstreambuf | 
 | { | 
 | public: | 
 |   Buf(const char* p, std::streamsize n) | 
 |   : std::strstreambuf(p, n) | 
 |   { } | 
 |  | 
 |   int_type pub_pbackfail(int_type c = traits_type::eof()) | 
 |   { | 
 |     return pbackfail(c); | 
 |   } | 
 | }; | 
 |  | 
 | // libstdc++/11460 | 
 | void test01() | 
 | { | 
 |   typedef std::strstreambuf::traits_type Traits; | 
 |   const char str[] = "a\xff"; | 
 |    | 
 |   Buf buf(str, 2); | 
 |    | 
 |   Traits::int_type a = Traits::to_int_type('a'); | 
 |   VERIFY( buf.sbumpc() == a ); | 
 |   VERIFY( buf.sungetc() == a ); | 
 |   VERIFY( buf.sbumpc() == a ); | 
 |   VERIFY( buf.sputbackc('a') == a ); | 
 |   VERIFY( buf.sbumpc() == a ); | 
 |   VERIFY( buf.pub_pbackfail() != Traits::eof() ); | 
 |   VERIFY( buf.sbumpc() == a ); | 
 |   VERIFY( buf.pub_pbackfail(a) == a ); | 
 |   buf.sbumpc(); | 
 |    | 
 |   Traits::int_type xff = Traits::to_int_type('\xff'); | 
 |   VERIFY( buf.sbumpc() == xff ); | 
 |   VERIFY( buf.sungetc() == xff ); | 
 |   VERIFY( buf.sbumpc() == xff ); | 
 |   VERIFY( buf.sputbackc('\xff') == xff ); | 
 |   VERIFY( buf.sbumpc() == xff ); | 
 |   VERIFY( buf.pub_pbackfail() != Traits::eof() ); | 
 |   VERIFY( buf.sbumpc() == xff ); | 
 |   VERIFY( buf.pub_pbackfail(xff) == xff ); | 
 | } | 
 |  | 
 | int main() | 
 | { | 
 |   test01(); | 
 |   return 0; | 
 | } |