c_locale.h: Change ::malloc() to new char[].
authorStephen M. Webb <stephen.webb@bregmasoft.com>
Fri, 30 Jan 2004 03:43:00 +0000 (03:43 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 30 Jan 2004 03:43:00 +0000 (03:43 +0000)
2004-01-29  Stephen M. Webb  <stephen.webb@bregmasoft.com>

* config/local/generic/c_locale.h: Change ::malloc() to new char[].
   * config/local/gnu/c_locale.h: Change ::malloc() to new char[].
   * include/bits/stl_tempbuf.h: Convert _Temporary_buffer to use
std::get_temporary_buffer() instead of duplicating its code.
Update to C++STYLE conventions.
   * include/std/std_memory.h (get_temporary_buffer): Use ::operator
new() instead of std::malloc().
(return_temporary_buffer): Use ::operator delete() instead of
std::free().

From-SVN: r76922

libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/generic/c_locale.h
libstdc++-v3/config/locale/gnu/c_locale.h
libstdc++-v3/include/bits/stl_tempbuf.h
libstdc++-v3/include/bits/stl_uninitialized.h
libstdc++-v3/include/std/std_memory.h
libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc

index 2065b92ef751d36e0f4120b560356bc5df650da6..e973cce9ac4125093303a24761b222c680261e9a 100644 (file)
@@ -1,3 +1,15 @@
+2004-01-29  Stephen M. Webb  <stephen.webb@bregmasoft.com>
+
+       * config/local/generic/c_locale.h: Change ::malloc() to new char[].
+       * config/local/gnu/c_locale.h: Change ::malloc() to new char[].
+       * include/bits/stl_tempbuf.h: Convert _Temporary_buffer to use
+       std::get_temporary_buffer() instead of duplicating its code.
+       Update to C++STYLE conventions.
+       * include/std/std_memory.h (get_temporary_buffer): Use ::operator
+       new() instead of std::malloc().
+       (return_temporary_buffer): Use ::operator delete() instead of
+       std::free().
+
 2004-01-29  Benjamin Kosnik  <bkoz@redhat.com>
 
        * include/bits/allocator.h: Temporary switch to new_allocator as
index c20b98ba24d26616f7b8b9300849e5c6f9aaa1be..9fadcc4d99c42c68f46e7e45f9091f2b238ecf78 100644 (file)
@@ -1,6 +1,6 @@
 // Wrapper for underlying C-language localization -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 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
@@ -39,7 +39,6 @@
 #pragma GCC system_header
 
 #include <clocale>
-#include <cstdlib>   // get std::malloc
 #include <cstring>   // get std::strlen
 #include <cstdio>    // get std::snprintf or std::sprintf
 
@@ -61,9 +60,8 @@ namespace std
                     _Tv __v, const __c_locale&, int __prec = -1)
     {
       char* __old = std::setlocale(LC_ALL, NULL);
-      char* __sav = static_cast<char*>(std::malloc(std::strlen(__old) + 1));
-      if (__sav)
-        std::strcpy(__sav, __old);
+      char* __sav = new char[std::strlen(__old) + 1];
+      std::strcpy(__sav, __old);
       std::setlocale(LC_ALL, "C");
 
       int __ret;
@@ -79,7 +77,7 @@ namespace std
         __ret = std::sprintf(__out, __fmt, __v);
 #endif
       std::setlocale(LC_ALL, __sav);
-      std::free(__sav);
+      delete [] __sav;
       return __ret;
     }
 }
index 069074eb9fe43fbd0ab072a7616d31d8fc5ac3b6..fe899cfc2a5bf3e38553e5257c6ab99afc7f43fa 100644 (file)
@@ -1,6 +1,6 @@
 // Wrapper for underlying C-language localization -*- C++ -*-
 
-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2003, 2004 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
@@ -39,7 +39,6 @@
 #pragma GCC system_header
 
 #include <cstring>              // get std::strlen
-#include <cstdlib>              // get std::malloc
 #include <cstdio>               // get std::snprintf or std::sprintf
 #include <clocale>
 #include <langinfo.h>          // For codecvt
@@ -76,9 +75,8 @@ namespace std
                     _Tv __v, const __c_locale&, int __prec = -1)
     {
       char* __old = std::setlocale(LC_ALL, NULL);
-      char* __sav = static_cast<char*>(std::malloc(std::strlen(__old) + 1));
-      if (__sav)
-        std::strcpy(__sav, __old);
+      char* __sav = new char[std::strlen(__old) + 1];
+      std::strcpy(__sav, __old);
       std::setlocale(LC_ALL, "C");
 #endif
 
@@ -99,7 +97,7 @@ namespace std
       __gnu_cxx::__uselocale(__old);
 #else
       std::setlocale(LC_ALL, __sav);
-      std::free(__sav);
+      delete [] __sav;
 #endif
       return __ret;
     }
index 0526c0d7706c93f8be7ea28e3a583b9209a4c447..87080c6220f2c26f928c40dbbf6777c9039975bc 100644 (file)
@@ -1,6 +1,6 @@
 // Temporary buffer implementation -*- C++ -*-
 
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2004 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
 #ifndef _TEMPBUF_H
 #define _TEMPBUF_H 1
 
-namespace std
-{
+#include <memory>
 
-/**
- *  @if maint
- *  This class is used in two places:  stl_algo.h and ext/memory, where it
- *  is wrapped as the temporary_buffer class.  See temporary_buffer docs for
- *  more notes.
- *  @endif
-*/
-template <class _ForwardIterator, class _Tp>
-  class _Temporary_buffer
+namespace std
 {
-  // concept requirements
-  __glibcxx_class_requires(_ForwardIterator, _ForwardIteratorConcept)
-
-  ptrdiff_t  _M_original_len;
-  ptrdiff_t  _M_len;
-  _Tp*       _M_buffer;
-
-  // this is basically get_temporary_buffer() all over again
-  void _M_allocate_buffer() {
-    _M_original_len = _M_len;
-    _M_buffer = 0;
-
-    if (_M_len > (ptrdiff_t)(INT_MAX / sizeof(_Tp)))
-      _M_len = INT_MAX / sizeof(_Tp);
-
-    while (_M_len > 0) {
-      _M_buffer = (_Tp*) malloc(_M_len * sizeof(_Tp));
-      if (_M_buffer)
-        break;
-      _M_len /= 2;
-    }
-  }
-
-  void _M_initialize_buffer(const _Tp&, __true_type) {}
-  void _M_initialize_buffer(const _Tp& val, __false_type) {
-    std::uninitialized_fill_n(_M_buffer, _M_len, val);
-  }
-
-public:
-  /// As per Table mumble.
-  ptrdiff_t size() const { return _M_len; }
-  /// Returns the size requested by the constructor; may be >size().
-  ptrdiff_t requested_size() const { return _M_original_len; }
-  /// As per Table mumble.
-  _Tp* begin() { return _M_buffer; }
-  /// As per Table mumble.
-  _Tp* end() { return _M_buffer + _M_len; }
-
-  _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) {
-    // Workaround for a __type_traits bug in the pre-7.3 compiler.
-    typedef typename __type_traits<_Tp>::has_trivial_default_constructor
-            _Trivial;
-
-    try {
-      _M_len = std::distance(__first, __last);
-      _M_allocate_buffer();
-      if (_M_len > 0)
-        _M_initialize_buffer(*__first, _Trivial());
-    }
-    catch(...)
+  /**
+   *  @if maint
+   *  This class is used in two places: stl_algo.h and ext/memory,
+   *  where it is wrapped as the temporary_buffer class.  See
+   *  temporary_buffer docs for more notes.
+   *  @endif
+   */
+  template<typename _ForwardIterator, typename _Tp>
+    class _Temporary_buffer
+    {
+      // concept requirements
+      __glibcxx_class_requires(_ForwardIterator, _ForwardIteratorConcept)
+
+       public:
+      typedef _Tp         value_type;
+      typedef value_type* pointer;
+      typedef pointer     iterator;
+      typedef ptrdiff_t   size_type;
+      
+    protected:
+      size_type  _M_original_len;
+      size_type  _M_len;
+      pointer    _M_buffer;
+      
+      void
+      _M_initialize_buffer(const _Tp&, __true_type) { }
+
+      void
+      _M_initialize_buffer(const _Tp& val, __false_type)
+      { std::uninitialized_fill_n(_M_buffer, _M_len, val); }
+      
+    public:
+      /// As per Table mumble.
+      size_type
+      size() const
+      { return _M_len; }
+      
+      /// Returns the size requested by the constructor; may be >size().
+      size_type
+      requested_size() const
+      { return _M_original_len; }
+      
+      /// As per Table mumble.
+      iterator
+      begin()
+      { return _M_buffer; }
+      
+      /// As per Table mumble.
+      iterator
+      end()
+      { return _M_buffer + _M_len; }
+      
+      /**
+       * Constructs a temporary buffer of a size somewhere between
+       * zero and the size of the given range.
+       */
+      _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last);
+      
+      ~_Temporary_buffer()
+      {  
+       std::_Destroy(_M_buffer, _M_buffer + _M_len);
+       std::return_temporary_buffer(_M_buffer);
+      }
+      
+    private:
+      // Disable copy constructor and assignment operator.
+      _Temporary_buffer(const _Temporary_buffer&);
+      void operator=(const _Temporary_buffer&);
+    };
+  
+
+  template<typename _ForwardIterator, typename _Tp>
+    _Temporary_buffer<_ForwardIterator, _Tp>::
+    _Temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
+    : _M_original_len(std::distance(__first, __last)), 
+      _M_len(0) , _M_buffer(0)
+    {
+      // Workaround for a __type_traits bug in the pre-7.3 compiler.
+      typedef typename __type_traits<_Tp>::has_trivial_default_constructor
+             _Trivial;
+
+      try
+      {
+       pair<pointer, size_type> __p(get_temporary_buffer<value_type>(_M_original_len));
+       _M_buffer = __p.first;
+       _M_len = __p.second;
+       if (_M_len > 0)
+         _M_initialize_buffer(*__first, _Trivial());
+      }
+      catch(...)
       { 
-       std::free(_M_buffer); 
+       std::return_temporary_buffer(_M_buffer);
        _M_buffer = 0; 
        _M_len = 0;
        __throw_exception_again; 
       }
-  }
-  ~_Temporary_buffer() {  
-    std::_Destroy(_M_buffer, _M_buffer + _M_len);
-    std::free(_M_buffer);
-  }
-
-private:
-  // Disable copy constructor and assignment operator.
-  _Temporary_buffer(const _Temporary_buffer&) {}
-  void operator=(const _Temporary_buffer&) {}
-};
-    
+    }
 } // namespace std
 
 #endif /* _TEMPBUF_H */
index e60e24a1c01310e4e1af59f982e195e3f2d016ea..1111646fd74b543dede2c3cbe616c0448bd10bdc 100644 (file)
@@ -65,9 +65,7 @@
 
 namespace std
 {
-
   // uninitialized_copy
-
   template<typename _InputIterator, typename _ForwardIterator>
     inline _ForwardIterator 
     __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last,
@@ -76,17 +74,18 @@ namespace std
     { return std::copy(__first, __last, __result); }
 
   template<typename _InputIterator, typename _ForwardIterator>
-    _ForwardIterator 
+    inline _ForwardIterator 
     __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last,
                             _ForwardIterator __result,
                             __false_type)
     {
       _ForwardIterator __cur = __result;
-      try {
-       for ( ; __first != __last; ++__first, ++__cur)
-         std::_Construct(&*__cur, *__first);
-       return __cur;
-      }
+      try 
+       {
+         for ( ; __first != __last; ++__first, ++__cur)
+           std::_Construct(&*__cur, *__first);
+         return __cur;
+       }
       catch(...)
        {
          std::_Destroy(__result, __cur);
@@ -105,7 +104,8 @@ namespace std
   */
   template<typename _InputIterator, typename _ForwardIterator>
     inline _ForwardIterator
-    uninitialized_copy(_InputIterator __first, _InputIterator __last, _ForwardIterator __result)
+    uninitialized_copy(_InputIterator __first, _InputIterator __last, 
+                      _ForwardIterator __result)
     {
       typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
       typedef typename __type_traits<_ValueType>::is_POD_type _Is_POD;
@@ -131,13 +131,15 @@ namespace std
   // destructor is trivial.
   template<typename _ForwardIterator, typename _Tp>
     inline void
-    __uninitialized_fill_aux(_ForwardIterator __first, _ForwardIterator __last, 
+    __uninitialized_fill_aux(_ForwardIterator __first, 
+                            _ForwardIterator __last, 
                             const _Tp& __x, __true_type)
     { std::fill(__first, __last, __x); }
 
   template<typename _ForwardIterator, typename _Tp>
     void
-    __uninitialized_fill_aux(_ForwardIterator __first, _ForwardIterator __last, 
+    __uninitialized_fill_aux(_ForwardIterator __first, 
+                            _ForwardIterator __last, 
                             const _Tp& __x, __false_type)
     {
       _ForwardIterator __cur = __first;
@@ -163,7 +165,8 @@ namespace std
   */
   template<typename _ForwardIterator, typename _Tp>
     inline void
-    uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __x)
+    uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last, 
+                      const _Tp& __x)
     {
       typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;
       typedef typename __type_traits<_ValueType>::is_POD_type _Is_POD;
@@ -176,9 +179,7 @@ namespace std
     inline _ForwardIterator
     __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,
                               const _Tp& __x, __true_type)
-    {
-      return std::fill_n(__first, __n, __x);
-    }
+    { return std::fill_n(__first, __n, __x); }
 
   template<typename _ForwardIterator, typename _Size, typename _Tp>
     _ForwardIterator
@@ -186,11 +187,12 @@ namespace std
                               const _Tp& __x, __false_type)
     {
       _ForwardIterator __cur = __first;
-      try {
-       for ( ; __n > 0; --__n, ++__cur)
-         std::_Construct(&*__cur, __x);
-       return __cur;
-      }
+      try 
+       {
+         for ( ; __n > 0; --__n, ++__cur)
+           std::_Construct(&*__cur, __x);
+         return __cur;
+       }
       catch(...)
        { 
          std::_Destroy(__first, __cur);
@@ -224,10 +226,13 @@ namespace std
   //  copies [first2, last2) into
   //  [result, result + (last1 - first1) + (last2 - first2)).
 
-  template<typename _InputIterator1, typename _InputIterator2, typename _ForwardIterator>
+  template<typename _InputIterator1, typename _InputIterator2, 
+          typename _ForwardIterator>
     inline _ForwardIterator
-    __uninitialized_copy_copy(_InputIterator1 __first1, _InputIterator1 __last1,
-                             _InputIterator2 __first2, _InputIterator2 __last2,
+    __uninitialized_copy_copy(_InputIterator1 __first1, 
+                             _InputIterator1 __last1,
+                             _InputIterator2 __first2, 
+                             _InputIterator2 __last2,
                              _ForwardIterator __result)
     {
       _ForwardIterator __mid = std::uninitialized_copy(__first1, __last1, __result);
@@ -270,10 +275,12 @@ namespace std
                              _ForwardIterator __first2, _ForwardIterator __last2,
                              const _Tp& __x)
     {
-      _ForwardIterator __mid2 = std::uninitialized_copy(__first1, __last1, __first2);
-      try {
-       std::uninitialized_fill(__mid2, __last2, __x);
-      }
+      _ForwardIterator __mid2 = std::uninitialized_copy(__first1, __last1, 
+                                                       __first2);
+      try 
+       {
+         std::uninitialized_fill(__mid2, __last2, __x);
+       }
       catch(...)
        {
          std::_Destroy(__first2, __mid2);
index eb2923276f7cdfedb6945613c2e42adfbaaabfa8..4e6641ef673998e3f5e612d8a9829d83594309bd 100644 (file)
@@ -1,6 +1,6 @@
 // <memory> -*- C++ -*-
 
-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+// Copyright (C) 2001, 2002, 2004 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
@@ -78,33 +78,36 @@ namespace std
       
       while (__len > 0) 
        {
-         _Tp* __tmp = (_Tp*) std::malloc((std::size_t)__len * sizeof(_Tp));
+         _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp), 
+                                                       nothrow));
          if (__tmp != 0)
            return pair<_Tp*, ptrdiff_t>(__tmp, __len);
          __len /= 2;
        }
-      return pair<_Tp*, ptrdiff_t>((_Tp*)0, 0);
+      return pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);
     }
 
   /**
-   *  @brief This is a mostly-useless wrapper around malloc().
+   *  @brief Allocates a temporary buffer.
    *  @param  len  The number of objects of type Tp.
-   *  @return   See full description.
+   *  @return See full description.
    *
    *  Reinventing the wheel, but this time with prettier spokes!
    *
-   *  This function tries to obtain storage for @c len adjacent Tp objects.
-   *  The objects themselves are not constructed, of course.  A pair<> is
-   *  returned containing "the buffer s address and capacity (in the units of
-   *  sizeof(Tp)), or a pair of 0 values if no storage can be obtained."
-   *  Note that the capacity obtained may be less than that requested if the
-   *  memory is unavailable; you should compare len with the .second return
-   *  value.
+   *  This function tries to obtain storage for @c len adjacent Tp
+   *  objects.  The objects themselves are not constructed, of course.
+   *  A pair<> is returned containing "the buffer s address and
+   *  capacity (in the units of sizeof(Tp)), or a pair of 0 values if
+   *  no storage can be obtained."  Note that the capacity obtained
+   *  may be less than that requested if the memory is unavailable;
+   *  you should compare len with the .second return value.
+   *
+   * Provides the nothrow exception guarantee.
    */
   template<typename _Tp>
     inline pair<_Tp*,ptrdiff_t>
     get_temporary_buffer(ptrdiff_t __len)
-    { return std::__get_temporary_buffer(__len, (_Tp*) 0); }
+    { return std::__get_temporary_buffer(__len, static_cast<_Tp*>(0)); }
 
   /**
    *  @brief The companion to get_temporary_buffer().
@@ -116,12 +119,12 @@ namespace std
   template<typename _Tp>
     void
     return_temporary_buffer(_Tp* __p)
-    { std::free(__p); }
+    { ::operator delete(__p, nothrow); }
 
   /**
-   *  A wrapper class to provide auto_ptr with reference semantics.  For
-   *  example, an auto_ptr can be assigned (or constructed from) the result of
-   *  a function which returns an auto_ptr by value.
+   *  A wrapper class to provide auto_ptr with reference semantics.
+   *  For example, an auto_ptr can be assigned (or constructed from)
+   *  the result of a function which returns an auto_ptr by value.
    *
    *  All the auto_ptr_ref stuff should happen behind the scenes.
    */
@@ -140,23 +143,25 @@ namespace std
    *
    *  The Standard says:
    *  <pre>
-   *  An @c auto_ptr owns the object it holds a pointer to.  Copying an
-   *  @c auto_ptr copies the pointer and transfers ownership to the destination.
-   *  If more than one @c auto_ptr owns the same object at the same time the
-   *  behavior of the program is undefined.
+   *  An @c auto_ptr owns the object it holds a pointer to.  Copying
+   *  an @c auto_ptr copies the pointer and transfers ownership to the
+   *  destination.  If more than one @c auto_ptr owns the same object
+   *  at the same time the behavior of the program is undefined.
    *
-   *  The uses of @c auto_ptr include providing temporary exception-safety for
-   *  dynamically allocated memory, passing ownership of dynamically allocated
-   *  memory to a function, and returning dynamically allocated memory from a
-   *  function.  @c auto_ptr does not meet the CopyConstructible and Assignable
-   *  requirements for Standard Library <a href="tables.html#65">container</a>
-   *  elements and thus instantiating a Standard Library container with an
-   *  @c auto_ptr results in undefined behavior.
+   *  The uses of @c auto_ptr include providing temporary
+   *  exception-safety for dynamically allocated memory, passing
+   *  ownership of dynamically allocated memory to a function, and
+   *  returning dynamically allocated memory from a function.  @c
+   *  auto_ptr does not meet the CopyConstructible and Assignable
+   *  requirements for Standard Library <a
+   *  href="tables.html#65">container</a> elements and thus
+   *  instantiating a Standard Library container with an @c auto_ptr
+   *  results in undefined behavior.
    *  </pre>
    *  Quoted from [20.4.5]/3.
    *
-   *  Good examples of what can and cannot be done with auto_ptr can be found
-   *  in the libstdc++ testsuite.
+   *  Good examples of what can and cannot be done with auto_ptr can
+   *  be found in the libstdc++ testsuite.
    *
    *  @if maint
    *  _GLIBCXX_RESOLVE_LIB_DEFECTS
@@ -196,7 +201,8 @@ namespace std
        *  @brief  An %auto_ptr can be constructed from another %auto_ptr.
        *  @param  a  Another %auto_ptr of a different but related type.
        *
-       *  A pointer-to-Tp1 must be convertible to a pointer-to-Tp/element_type.
+       *  A pointer-to-Tp1 must be convertible to a
+       *  pointer-to-Tp/element_type.
        *
        *  This object now @e owns the object previously owned by @a a,
        *  which has given up ownsership.
@@ -238,9 +244,9 @@ namespace std
        }
 
       /**
-       *  When the %auto_ptr goes out of scope, the object it owns is deleted.
-       *  If it no longer owns anything (i.e., @c get() is @c NULL), then this
-       *  has no effect.
+       *  When the %auto_ptr goes out of scope, the object it owns is
+       *  deleted.  If it no longer owns anything (i.e., @c get() is
+       *  @c NULL), then this has no effect.
        *
        *  @if maint
        *  The C++ standard says there is supposed to be an empty throw
@@ -284,8 +290,8 @@ namespace std
        *  @return  The raw pointer being managed.
        *
        *  You can get a copy of the pointer that this object owns, for
-       *  situations such as passing to a function which only accepts a raw
-       *  pointer.
+       *  situations such as passing to a function which only accepts
+       *  a raw pointer.
        *
        *  @note  This %auto_ptr still owns the memory.
        */
@@ -297,8 +303,8 @@ namespace std
        *  @return  The raw pointer being managed.
        *
        *  You can get a copy of the pointer that this object owns, for
-       *  situations such as passing to a function which only accepts a raw
-       *  pointer.
+       *  situations such as passing to a function which only accepts
+       *  a raw pointer.
        *
        *  @note  This %auto_ptr no longer owns the memory.  When this object
        *  goes out of scope, nothing will happen.
@@ -315,8 +321,8 @@ namespace std
        *  @brief  Forcibly deletes the managed object.
        *  @param  p  A pointer (defaults to NULL).
        *
-       *  This object now @e owns the object pointed to by @a p.  The previous
-       *  object has been deleted.
+       *  This object now @e owns the object pointed to by @a p.  The
+       *  previous object has been deleted.
        */
       void
       reset(element_type* __p = 0) throw()
index 15a6ae43986b88b76d36e13069a21dc27ec21a30..55291676f3d91f0d1da018b51880bf75a8736c62 100644 (file)
@@ -1,6 +1,6 @@
 // { dg-do compile }
 
-// Copyright (C) 2002, 2003 Free Software Foundation
+// Copyright (C) 2002, 2003, 2004 Free Software Foundation
 //
 // 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
@@ -46,5 +46,5 @@ main()
   test01();
   return 0;
 }
-// { dg-error "candidates" "" { target *-*-* } 217 } 
-// { dg-error "std::auto_ptr" "" { target *-*-* } 347 } 
+// { dg-error "candidates" "" { target *-*-* } 223 } 
+// { dg-error "std::auto_ptr" "" { target *-*-* } 353 }