diff --git a/contrib/libstdc++/ChangeLog b/contrib/libstdc++/ChangeLog index 504af7271274..0fa93eb3182b 100644 --- a/contrib/libstdc++/ChangeLog +++ b/contrib/libstdc++/ChangeLog @@ -1,3 +1,51 @@ +2006-03-05 Release Manager + + * GCC 3.4.6 released. + +2005-11-30 Release Manager + + * GCC 3.4.5 released. + +2005-09-10 Joseph S. Myers + + * testsuite/26_numerics/c99_classification_macros_c.cc: + XFAIL on *-*-linux*, not *-*-linux-gnu. + +2005-09-01 Benjamin Kosnik + + * include/c_std/std_cmath.h: Declare C99 functions and helper + functions as inline. + +2005-08-29 Paolo Carlini + + PR libstdc++/23528 + Port from HEAD/4_0-branch: + 2004-07-28 Matt Austern + * include/ext/hashtable.h: Use rebind so that allocator_type + has correct type for a container's allocator. + * testsuite/ext/23528.cc: New. + +2005-08-24 Lawrence Lim + Jakub Jelinek + Benjamin Kosnik + + PR libstdc++/23550 + * testsuite/21_strings/char_traits/requirements/char/1.cc + (test01): Simplify counting. + * testsuite/21_strings/char_traits/requirements/wchar_t/1.cc + (test02): Same. + +2005-07-18 Paolo Carlini + Nathan Myers + + PR libstdc++/21286 + * include/bits/fstream.tcc (basic_filebuf<>::xsgetn): + Loop on short reads. + +2005-05-27 Mark Mitchell + + * testsuite/Makefile.in: Regenerate with Automake 1.7.8. + 2005-05-19 Release Manager * GCC 3.4.4 released. diff --git a/contrib/libstdc++/include/bits/c++config b/contrib/libstdc++/include/bits/c++config index d6eee46059bf..15e4b28d7e2a 100644 --- a/contrib/libstdc++/include/bits/c++config +++ b/contrib/libstdc++/include/bits/c++config @@ -35,7 +35,7 @@ #include // The current version of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20050519 +#define __GLIBCXX__ 20060311 // Allow use of "export template." This is currently not a feature // that g++ supports. diff --git a/contrib/libstdc++/include/bits/fstream.tcc b/contrib/libstdc++/include/bits/fstream.tcc index 25a4d48cb720..3b433ea79b05 100644 --- a/contrib/libstdc++/include/bits/fstream.tcc +++ b/contrib/libstdc++/include/bits/fstream.tcc @@ -535,13 +535,28 @@ namespace std __n -= __avail; } - const streamsize __len = _M_file.xsgetn(reinterpret_cast(__s), - __n); - if (__len == -1) - __throw_ios_failure(__N("basic_filebuf::xsgetn " - "error reading the file")); - __ret += __len; - if (__len == __n) + // Need to loop in case of short reads (relatively common + // with pipes). + streamsize __len; + for (;;) + { + __len = _M_file.xsgetn(reinterpret_cast(__s), + __n); + if (__len == -1) + __throw_ios_failure(__N("basic_filebuf::xsgetn " + "error reading the file")); + if (__len == 0) + break; + + __n -= __len; + __ret += __len; + if (__n == 0) + break; + + __s += __len; + } + + if (__n == 0) { _M_set_buffer(0); _M_reading = true; diff --git a/contrib/libstdc++/include/c_std/std_cmath.h b/contrib/libstdc++/include/c_std/std_cmath.h index 66866b2cc3a0..729f5109bd9f 100644 --- a/contrib/libstdc++/include/c_std/std_cmath.h +++ b/contrib/libstdc++/include/c_std/std_cmath.h @@ -444,57 +444,57 @@ namespace std namespace __gnu_cxx { template - int + inline int __capture_fpclassify(_Tp __f) { return fpclassify(__f); } template - int + inline int __capture_isfinite(_Tp __f) { return isfinite(__f); } template - int + inline int __capture_isinf(_Tp __f) { return isinf(__f); } template - int + inline int __capture_isnan(_Tp __f) { return isnan(__f); } template - int + inline int __capture_isnormal(_Tp __f) { return isnormal(__f); } template - int + inline int __capture_signbit(_Tp __f) { return signbit(__f); } template - int + inline int __capture_isgreater(_Tp __f1, _Tp __f2) { return isgreater(__f1, __f2); } template - int - __capture_isgreaterequal(_Tp __f1, _Tp __f2) - { return isgreaterequal(__f1, __f2); } + inline int + __capture_isgreaterequal(_Tp __f1, _Tp __f2) + { return isgreaterequal(__f1, __f2); } template - int - __capture_isless(_Tp __f1, _Tp __f2) { return isless(__f1, __f2); } + inline int + __capture_isless(_Tp __f1, _Tp __f2) { return isless(__f1, __f2); } template - int - __capture_islessequal(_Tp __f1, _Tp __f2) - { return islessequal(__f1, __f2); } + inline int + __capture_islessequal(_Tp __f1, _Tp __f2) + { return islessequal(__f1, __f2); } template - int - __capture_islessgreater(_Tp __f1, _Tp __f2) - { return islessgreater(__f1, __f2); } + inline int + __capture_islessgreater(_Tp __f1, _Tp __f2) + { return islessgreater(__f1, __f2); } template - int - __capture_isunordered(_Tp __f1, _Tp __f2) - { return isunordered(__f1, __f2); } + inline int + __capture_isunordered(_Tp __f1, _Tp __f2) + { return isunordered(__f1, __f2); } } // Only undefine the C99 FP macros, if actually captured for namespace movement @@ -518,54 +518,54 @@ namespace __gnu_cxx namespace __gnu_cxx { template - int + inline int fpclassify(_Tp __f) { return __capture_fpclassify(__f); } template - int + inline int isfinite(_Tp __f) { return __capture_isfinite(__f); } template - int + inline int isinf(_Tp __f) { return __capture_isinf(__f); } template - int + inline int isnan(_Tp __f) { return __capture_isnan(__f); } template - int + inline int isnormal(_Tp __f) { return __capture_isnormal(__f); } template - int + inline int signbit(_Tp __f) { return __capture_signbit(__f); } template - int + inline int isgreater(_Tp __f1, _Tp __f2) { return __capture_isgreater(__f1, __f2); } template - int + inline int isgreaterequal(_Tp __f1, _Tp __f2) { return __capture_isgreaterequal(__f1, __f2); } template - int + inline int isless(_Tp __f1, _Tp __f2) { return __capture_isless(__f1, __f2); } template - int + inline int islessequal(_Tp __f1, _Tp __f2) { return __capture_islessequal(__f1, __f2); } template - int + inline int islessgreater(_Tp __f1, _Tp __f2) { return __capture_islessgreater(__f1, __f2); } template - int + inline int isunordered(_Tp __f1, _Tp __f2) { return __capture_isunordered(__f1, __f2); } } diff --git a/contrib/libstdc++/include/ext/hashtable.h b/contrib/libstdc++/include/ext/hashtable.h index f81a8580b15a..9f2fb1ef151d 100644 --- a/contrib/libstdc++/include/ext/hashtable.h +++ b/contrib/libstdc++/include/ext/hashtable.h @@ -1,6 +1,6 @@ // Hashtable implementation used by containers -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005 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 @@ -241,7 +241,7 @@ private: typedef _Hashtable_node<_Val> _Node; public: - typedef _Alloc allocator_type; + typedef typename _Alloc::template rebind::other allocator_type; allocator_type get_allocator() const { return _M_node_allocator; } private: typedef typename _Alloc::template rebind<_Node>::other _Node_Alloc;