From 697649eab16dbbddab8411ae4172072513d614a4 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Wed, 18 Oct 2000 23:26:22 +0000 Subject: [PATCH] Makefile.am (exception): Change exception.cc to exception_support.cc. 2000-10-18 Benjamin Kosnik * libsupc++/Makefile.am (exception): Change exception.cc to exception_support.cc. (CXXLINK): Remove bogus --tag CC. * libsupc++/Makefile.in: Regenerate. * libsupc++/exception.cc: Move to... * libsupc++/exception_support.cc: ...here. * src/Makefile.am: Remove bogus --tag CC. * src/Makefile.in: Regenerate. * include/bits/locale_facets.tcc (use_facet): Simplify. * include/bits/locale_facets.h (use_facet >): Correct use_facet declaration. Replace 'const ctype' with ctype. (use_facet >): Same. * src/locale-inst.cc: Remove explicit instantiation. * src/locale.cc: Correct signature here too. (_Bad_use_facet::what()): Correct error string. * include/bits/localefwd.h: Correct comment. * mkcheck.in (C_DIR): Change libsupc++/include to libsupc++. From-SVN: r36943 --- libstdc++-v3/ChangeLog | 25 +- libstdc++-v3/include/bits/locale_facets.h | 4 +- libstdc++-v3/include/bits/locale_facets.tcc | 4 +- libstdc++-v3/include/bits/localefwd.h | 2 +- libstdc++-v3/libsupc++/Makefile.am | 11 +- libstdc++-v3/libsupc++/Makefile.in | 8 +- libstdc++-v3/libsupc++/exception.cc | 403 -------------------- libstdc++-v3/mkcheck.in | 2 +- libstdc++-v3/src/Makefile.am | 4 +- libstdc++-v3/src/Makefile.in | 2 +- libstdc++-v3/src/locale-inst.cc | 6 - libstdc++-v3/src/locale.cc | 7 +- 12 files changed, 49 insertions(+), 429 deletions(-) delete mode 100644 libstdc++-v3/libsupc++/exception.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fd169561b21..4080d236403 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,4 +1,27 @@ -Tue Oct 17 20:06:59 2000 Martin Buchholz +2000-10-18 Benjamin Kosnik + + * libsupc++/Makefile.am (exception): Change exception.cc to + exception_support.cc. + (CXXLINK): Remove bogus --tag CC. + * libsupc++/Makefile.in: Regenerate. + * libsupc++/exception.cc: Move to... + * libsupc++/exception_support.cc: ...here. + + * src/Makefile.am: Remove bogus --tag CC. + * src/Makefile.in: Regenerate. + + * include/bits/locale_facets.tcc (use_facet): Simplify. + * include/bits/locale_facets.h (use_facet >): Correct + use_facet declaration. Replace 'const ctype' with ctype. + (use_facet >): Same. + * src/locale-inst.cc: Remove explicit instantiation. + * src/locale.cc: Correct signature here too. + (_Bad_use_facet::what()): Correct error string. + * include/bits/localefwd.h: Correct comment. + + * mkcheck.in (C_DIR): Change libsupc++/include to libsupc++. + +2000-10-17 Martin Buchholz * testsuite/27_io/istream_seeks.cc: Fix spelling typo. * testsuite/27_io/ostream_seeks.cc: Similarly. diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h index 6f4ae6a23da..ea651307fb3 100644 --- a/libstdc++-v3/include/bits/locale_facets.h +++ b/libstdc++-v3/include/bits/locale_facets.h @@ -390,7 +390,7 @@ namespace std template<> const ctype& - use_facet >(const locale& __loc); + use_facet >(const locale& __loc); #ifdef _GLIBCPP_USE_WCHAR_T // ctype specialization @@ -503,7 +503,7 @@ namespace std template<> const ctype& - use_facet< const ctype >(const locale& __loc); + use_facet >(const locale& __loc); #endif //_GLIBCPP_USE_WCHAR_T // Include host-specific ctype inlines. diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 594e6047a31..a268c4e1cb2 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -70,11 +70,11 @@ namespace std use_facet(const locale& __loc) { typedef locale::_Impl::__vec_facet __vec_facet; - const locale::facet* __fp = (const _Facet*)0; // check derivation locale::id& __id = _Facet::id; // check member id size_t __i = __id._M_index; __vec_facet* __facet = __loc._M_impl->_M_facets; - if (__i >= __facet->size() || (__fp = (*(__facet))[__i]) == 0) + const locale::facet* __fp = (*__facet)[__i]; // check derivation + if (__i >= __facet->size() || __fp == 0) return _Use_facet_failure_handler<_Facet>(__loc); return static_cast(*__fp); } diff --git a/libstdc++-v3/include/bits/localefwd.h b/libstdc++-v3/include/bits/localefwd.h index 44e85604bdb..f68e2f7aff9 100644 --- a/libstdc++-v3/include/bits/localefwd.h +++ b/libstdc++-v3/include/bits/localefwd.h @@ -141,7 +141,7 @@ namespace std template class ctype_byname; - // NB: Specialized for char and wchar_t in locfacets.h. + // NB: Specialized for char and wchar_t in locale_facets.h. class codecvt_base; template diff --git a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile.am index ef8c1632b47..ec5732d789b 100644 --- a/libstdc++-v3/libsupc++/Makefile.am +++ b/libstdc++-v3/libsupc++/Makefile.am @@ -84,7 +84,7 @@ sources = \ del_opnt.cc \ del_opv.cc \ del_opvnt.cc \ - exception.cc \ + exception_support.cc \ new_handler.cc \ new_op.cc \ new_opnt.cc \ @@ -127,7 +127,6 @@ AM_CXXFLAGS = \ $(OPTIMIZE_CXXFLAGS) \ $(CONFIG_CXXFLAGS) - # libstdc++ libtool notes # 1) Need to explicitly set LTCXXCOMPILE so that AM_CXXFLAGS is @@ -153,5 +152,11 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ # the rules automake generates would be used. We cannot allow CXX to # be used in libtool since this would add -lstdc++ to the link line # which of course is problematic at this point. -CXXLINK = $(LIBTOOL) --tag CC --mode=link "$(CC)" \ +CXXLINK = $(LIBTOOL) --mode=link "$(CC)" \ @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ + + + + + + diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in index e278197c145..f3c02c8be3e 100644 --- a/libstdc++-v3/libsupc++/Makefile.in +++ b/libstdc++-v3/libsupc++/Makefile.in @@ -147,7 +147,7 @@ INCLUDES = -I$(top_srcdir)/../gcc -I$(top_srcdir)/../include $(CSHADOW_INCLUD headers = cxxabi.h exception new new.h typeinfo -sources = del_op.cc del_opnt.cc del_opv.cc del_opvnt.cc exception.cc new_handler.cc new_op.cc new_opnt.cc new_opv.cc new_opvnt.cc pure.cc tinfo.cc tinfo2.cc vec.cc +sources = del_op.cc del_opnt.cc del_opv.cc del_opvnt.cc exception_support.cc new_handler.cc new_op.cc new_opnt.cc new_opv.cc new_opvnt.cc pure.cc tinfo.cc tinfo2.cc vec.cc libsupc___la_SOURCES = $(sources) @@ -195,7 +195,7 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) $( # the rules automake generates would be used. We cannot allow CXX to # be used in libtool since this would add -lstdc++ to the link line # which of course is problematic at this point. -CXXLINK = $(LIBTOOL) --tag CC --mode=link "$(CC)" @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --mode=link "$(CC)" @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ../config.h @@ -210,12 +210,12 @@ LIBS = @LIBS@ libsupc__convenience_la_LDFLAGS = libsupc__convenience_la_LIBADD = libsupc__convenience_la_OBJECTS = del_op.lo del_opnt.lo del_opv.lo \ -del_opvnt.lo exception.lo new_handler.lo new_op.lo new_opnt.lo \ +del_opvnt.lo exception_support.lo new_handler.lo new_op.lo new_opnt.lo \ new_opv.lo new_opvnt.lo pure.lo tinfo.lo tinfo2.lo vec.lo libsupc___la_LDFLAGS = libsupc___la_LIBADD = libsupc___la_OBJECTS = del_op.lo del_opnt.lo del_opv.lo del_opvnt.lo \ -exception.lo new_handler.lo new_op.lo new_opnt.lo new_opv.lo \ +exception_support.lo new_handler.lo new_op.lo new_opnt.lo new_opv.lo \ new_opvnt.lo pure.lo tinfo.lo tinfo2.lo vec.lo CXXFLAGS = @CXXFLAGS@ CXXCOMPILE = $(CXX) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) diff --git a/libstdc++-v3/libsupc++/exception.cc b/libstdc++-v3/libsupc++/exception.cc deleted file mode 100644 index 886915c823b..00000000000 --- a/libstdc++-v3/libsupc++/exception.cc +++ /dev/null @@ -1,403 +0,0 @@ -// Functions for Exception Support for -*- C++ -*- -// Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 Free Software Foundation - -// This file is part of GNU CC. - -// GNU CC 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 2, or (at your option) -// any later version. - -// GNU CC 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 GNU CC; see the file COPYING. If not, write to -// the Free Software Foundation, 59 Temple Place - Suite 330, -// Boston, MA 02111-1307, USA. - -// As a special exception, you may use this file as part of a free software -// library without restriction. Specifically, if other files instantiate -// templates or use macros or inline functions from this file, or you compile -// this file and link it with other files to produce an executable, this -// file does not by itself cause the resulting executable to be covered by -// the GNU General Public License. This exception does not however -// invalidate any other reasons why the executable file might be covered by -// the GNU General Public License. - -#pragma implementation "exception" - -#include "typeinfo" -#include "exception" -#include -#include "gansidecl.h" /* Needed to support macros used in eh-common.h. */ -#include "eh-common.h" - -/* Define terminate, unexpected, set_terminate, set_unexpected as - well as the default terminate func and default unexpected func. */ - -extern std::terminate_handler __terminate_func __attribute__((__noreturn__)); -using std::terminate; - -void -std::terminate () -{ - __terminate_func (); -} - -void -__default_unexpected () -{ - terminate (); -} - -static std::unexpected_handler __unexpected_func __attribute__((__noreturn__)) - = __default_unexpected; - -std::terminate_handler -std::set_terminate (std::terminate_handler func) -{ - std::terminate_handler old = __terminate_func; - - __terminate_func = func; - return old; -} - -std::unexpected_handler -std::set_unexpected (std::unexpected_handler func) -{ - std::unexpected_handler old = __unexpected_func; - - __unexpected_func = func; - return old; -} - -void -std::unexpected () -{ - __unexpected_func (); -} - -/* The type of a function called to clean up an exception object. - (These will be destructors.) Under the old ABI, these take a - second argument (the `in-charge' argument), that indicates whether - or not do delete the object, and whether or not to destroy virtual - bases. Under the new ABI, there is no second argument. */ -#if !defined (__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100 -typedef void (*cleanup_fn)(void *, int); -/* The `2' is the value for the in-charge parameter that indicates - that virtual bases should be destroyed. */ -#define CALL_CLEANUP(FN, THIS) FN (THIS, 2) -#else -typedef void (*cleanup_fn)(void *); -#define CALL_CLEANUP(FN, THIS) FN (THIS) -#endif - -/* C++-specific state about the current exception. - This must match init_exception_processing(). - - Note that handlers and caught are not redundant; when rethrown, an - exception can have multiple active handlers and still be considered - uncaught. */ - -struct cp_eh_info -{ - __eh_info eh_info; - void *value; - void *type; - cleanup_fn cleanup; - bool caught; - cp_eh_info *next; - long handlers; - void *original_value; -}; - -/* Language-specific EH info pointer, defined in libgcc2. */ - -extern "C" cp_eh_info **__get_eh_info (); // actually void ** - -/* Exception allocate and free, defined in libgcc2. */ -extern "C" void *__eh_alloc(size_t); -extern "C" void __eh_free(void *); - -/* Is P the type_info node for a pointer of some kind? */ - -extern bool __is_pointer (void *); - - -/* OLD Compiler hook to return a pointer to the info for the current exception. - Used by get_eh_info (). This fudges the actualy returned value to - point to the beginning of what USE to be the cp_eh_info structure. - THis is so that old code that dereferences this pointer will find - things where it expects it to be.*/ -extern "C" void * -__cp_exception_info (void) -{ - return &((*__get_eh_info ())->value); -} - -#define CP_EH_INFO ((cp_eh_info *) *__get_eh_info ()) - -/* Old Compiler hook to return a pointer to the info for the current exception. - Used by get_eh_info (). */ - -extern "C" cp_eh_info * -__cp_eh_info (void) -{ - cp_eh_info *p = CP_EH_INFO; - return p; -} - -/* Compiler hook to return a pointer to the info for the current exception, - Set the caught bit, and increment the number of handlers that are - looking at this exception. This makes handlers smaller. */ - -extern "C" cp_eh_info * -__start_cp_handler (void) -{ - cp_eh_info *p = CP_EH_INFO; - p->caught = 1; - p->handlers++; - return p; -} - -extern "C" int __throw_type_match_rtti_2 (const void *, const void *, - void *, void **); - -extern "C" void * -__cplus_type_matcher (__eh_info *info_, void *match_info, - exception_descriptor *exception_table) -{ - cp_eh_info *info = (cp_eh_info *)info_; - - /* No exception table implies the old style mechanism, so don't check. */ - if (exception_table != NULL - && exception_table->lang.language != EH_LANG_C_plus_plus) - return NULL; - - if (match_info == CATCH_ALL_TYPE) - return (void *)1; - - /* we don't worry about version info yet, there is only one version! */ - - void *match_type = match_info; - -#if !defined (__GXX_ABI_VERSION) || __GXX_ABI_VERSION < 100 - match_type = ((void *(*)())match_type) (); -#endif - - if (__throw_type_match_rtti_2 (match_type, info->type, - info->original_value, &info->value)) - // Arbitrary non-null pointer. - return (void *)1; - else - return NULL; -} - -/* Compiler hook to push a new exception onto the stack. - Used by expand_throw(). */ - -extern "C" void -__cp_push_exception (void *value, void *type, cleanup_fn cleanup) -{ - cp_eh_info *p = (cp_eh_info *) __eh_alloc (sizeof (cp_eh_info)); - - p->value = value; - p->type = type; - p->cleanup = cleanup; - p->handlers = 0; - p->caught = false; - p->original_value = value; - - p->eh_info.match_function = __cplus_type_matcher; - p->eh_info.language = EH_LANG_C_plus_plus; - p->eh_info.version = 1; - - cp_eh_info **q = __get_eh_info (); - - p->next = *q; - *q = p; -} - -/* Compiler hook to pop an exception that has been finalized. Used by - push_eh_cleanup(). P is the info for the exception caught by the - current catch block. */ - -extern "C" void -__cp_pop_exception (cp_eh_info *p) -{ - cp_eh_info **stack = __get_eh_info (); - cp_eh_info **q = stack; - - --p->handlers; - - /* Do nothing if our exception is being rethrown (i.e. if the active - exception is our exception and it is uncaught). */ - if (p == *q && !p->caught) - return; - - /* Don't really pop if there are still active handlers for our exception; - rather, push it down past any uncaught exceptions. */ - if (p->handlers != 0) - { - if (p == *q && p->next && !p->next->caught) - { - q = &(p->next); - while (1) - { - if (*q == 0 || (*q)->caught) - break; - - q = &((*q)->next); - } - *stack = p->next; - p->next = *q; - *q = p; - } - return; - } - - for (; *q; q = &((*q)->next)) - if (*q == p) - break; - - if (! *q) - terminate (); - - *q = p->next; - - if (p->cleanup) - // value may have been adjusted. - CALL_CLEANUP (p->cleanup, p->original_value); - - if (! __is_pointer (p->type)) - __eh_free (p->original_value); // value may have been adjusted. - - __eh_free (p); -} - -/* We're doing a rethrow. Find the currently handled exception, mark it - uncaught, and move it to the top of the EH stack. */ - -extern "C" void -__uncatch_exception (void) -{ - cp_eh_info **stack = __get_eh_info (); - cp_eh_info **q = stack; - cp_eh_info *p; - - while (1) - { - p = *q; - - if (p == 0) - terminate (); - if (p->caught) - break; - - q = &(p->next); - } - - if (q != stack) - { - *q = p->next; - p->next = *stack; - *stack = p; - } - - p->caught = false; -} - -/* As per [except.unexpected]: - If an exception is thrown, we check it against the spec. If it doesn't - match, we call unexpected (). If unexpected () throws, we check that - exception against the spec. If it doesn't match, if the spec allows - bad_exception we throw that; otherwise we call terminate (). - - The compiler treats an exception spec as a try block with a generic - handler that just calls this function with a list of the allowed - exception types, so we have an active exception that can be rethrown. - - This function does not return. */ - -extern "C" void -__check_eh_spec (int n, const void **spec) -{ - cp_eh_info *p = CP_EH_INFO; - void *d; - - for (int i = 0; i < n; ++i) - { - if (__throw_type_match_rtti_2 (spec[i], p->type, p->value, &d)) - throw; - } - - try - { - std::unexpected (); - } - catch (...) - { - // __exception_info is an artificial var pushed into each catch block. - if (p != __exception_info) - { - p = __exception_info; - for (int i = 0; i < n; ++i) - { - if (__throw_type_match_rtti_2 (spec[i], p->type, p->value, &d)) - throw; - } - } - - const std::type_info &bad_exc = typeid (std::bad_exception); - for (int i = 0; i < n; ++i) - { - if (__throw_type_match_rtti_2 (spec[i], &bad_exc, p->value, &d)) - throw std::bad_exception (); - } - - terminate (); - } -} - -/* Special case of the above for throw() specs. */ - -extern "C" void -__check_null_eh_spec (void) -{ - __check_eh_spec (0, 0); -} - -// Helpers for rtti. Although these don't return, we give them return types so -// that the type system is not broken. - -extern "C" void * -__throw_bad_cast () -{ - throw std::bad_cast (); - return 0; -} - -extern "C" std::type_info const & -__throw_bad_typeid () -{ - throw std::bad_typeid (); - return typeid (void); -} - -/* Has the current exception been caught? */ - -bool -std::uncaught_exception () -{ - cp_eh_info *p = CP_EH_INFO; - return p && ! p->caught; -} - -const char * std::exception:: -what () const -{ - return typeid (*this).name (); -} diff --git a/libstdc++-v3/mkcheck.in b/libstdc++-v3/mkcheck.in index 1050de26806..3db91c40baa 100755 --- a/libstdc++-v3/mkcheck.in +++ b/libstdc++-v3/mkcheck.in @@ -58,7 +58,7 @@ C_DIR="`basename @C_INCLUDE_DIR@`" if [ $WHICH != "1" ]; then INC_PATH="@CSHADOW_FLAGS@ -I$BUILD_DIR -I$BUILD_DIR/libio \ -I$SRC_DIR/include/std -I$SRC_DIR/include/$C_DIR \ - -I$SRC_DIR/include -I$SRC_DIR/libsupc++/include -I$SRC_DIR/libio \ + -I$SRC_DIR/include -I$SRC_DIR/libsupc++ -I$SRC_DIR/libio \ -I$SRC_DIR/testsuite" elif [ $WHICH -eq 1 ]; then INC_PATH="-I$SRC_DIR/testsuite" diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index d7ebb237f9b..c32534d1502 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -21,7 +21,7 @@ ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, ## USA. -## $Id: Makefile.am,v 1.41 2000/10/15 08:45:33 bkoz Exp $ +## $Id: Makefile.am,v 1.42 2000/10/17 10:12:23 bkoz Exp $ AUTOMAKE_OPTIONS = 1.3 gnits MAINT_CHARSET = latin1 @@ -337,5 +337,5 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) \ # the rules automake generates would be used. We cannot allow CXX to # be used in libtool since this would add -lstdc++ to the link line # which of course is problematic at this point. -CXXLINK = $(LIBTOOL) --tag CC --mode=link "$(CC)" \ +CXXLINK = $(LIBTOOL) --mode=link "$(CC)" \ @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index c2d71aca987..72d616b067d 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -220,7 +220,7 @@ LTCXXCOMPILE = $(LIBTOOL) --tag CXX --mode=compile $(CXX) $(INCLUDES) $( # the rules automake generates would be used. We cannot allow CXX to # be used in libtool since this would add -lstdc++ to the link line # which of course is problematic at this point. -CXXLINK = $(LIBTOOL) --tag CC --mode=link "$(CC)" @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ +CXXLINK = $(LIBTOOL) --mode=link "$(CC)" @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@ mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = ../config.h diff --git a/libstdc++-v3/src/locale-inst.cc b/libstdc++-v3/src/locale-inst.cc index a0a1d63f30d..290c468a8f6 100644 --- a/libstdc++-v3/src/locale-inst.cc +++ b/libstdc++-v3/src/locale-inst.cc @@ -152,9 +152,6 @@ namespace std { template const num_get& use_facet >(const locale &); - template - const ctype& - use_facet >(const locale& __loc); template const codecvt& use_facet >(const locale&); @@ -169,9 +166,6 @@ namespace std { template const num_get& use_facet >(const locale &); - template - const ctype& - use_facet >(const locale& __loc); template const codecvt& use_facet >(locale const &); diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 9049e09f0ed..bec71acaca6 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -189,7 +189,7 @@ namespace std { template<> const ctype& - use_facet > (const locale& __loc) + use_facet >(const locale& __loc) { size_t __i = ctype::id._M_index; const locale::_Impl* __tmp = __loc._M_impl; @@ -199,7 +199,7 @@ namespace std { #ifdef _GLIBCPP_USE_WCHAR_T template<> const ctype& - use_facet< const ctype > (const locale& __loc) + use_facet >(const locale& __loc) { size_t __i = ctype::id._M_index; const locale::_Impl* __tmp = __loc._M_impl; @@ -649,6 +649,7 @@ namespace std { try { // 26 Standard facets, 2 references. // One reference for _M_classic, one for _M_global + // XXX _S_classic = _S_global = new _Impl(26, 2); _S_classic = new _Impl(_S_facets_num, 2, true, "C"); _S_global = _S_classic; @@ -771,7 +772,7 @@ namespace std { char const* _Bad_use_facet:: what() const throw() - { return "bad_cast thrown from use_facet"; } + { return "_Bad_use_facet thrown from use_facet"; } _Bad_use_facet:: ~_Bad_use_facet() throw() { } -- 2.30.2