From 66143232bcc2a86d69242f0e911f2d8a6f12ffb4 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Wed, 18 May 2005 22:11:24 +0000 Subject: re PR libstdc++/19495 (basic_string::_M_rep() can produce an unnaturally aligned pointer to _Rep) 2005-05-18 Paolo Carlini Nathan Myers PR libstdc++/19495 * include/bits/basic_string.h (_Raw_bytes_alloc): Rebind to size_type instead of char and rename to _Raw_alloc. * include/bits/basic_string.tcc (_Rep::_M_destroy, _Rep::_S_create): Use the above. * src/bitmap_allocator.cc: Add instantiation for size_type. * src/mt_allocator.cc: Likewise. * src/pool_allocator.cc: Likewise. * include/ext/array_allocator.h: Tweak slightly, avoid assuming the existence of an _Array::begin() and size() members. * testsuite/ext/array_allocator/2.cc: Tweak to use an allocator of size_type, instead of char, thus avoiding problems with rebinds, not treated correctly by array_allocator. Co-Authored-By: Nathan Myers From-SVN: r99933 --- libstdc++-v3/src/bitmap_allocator.cc | 4 ++++ libstdc++-v3/src/mt_allocator.cc | 5 +++-- libstdc++-v3/src/pool_allocator.cc | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) (limited to 'libstdc++-v3/src') diff --git a/libstdc++-v3/src/bitmap_allocator.cc b/libstdc++-v3/src/bitmap_allocator.cc index c8d94af..4e42cce 100644 --- a/libstdc++-v3/src/bitmap_allocator.cc +++ b/libstdc++-v3/src/bitmap_allocator.cc @@ -41,6 +41,10 @@ namespace __gnu_cxx ::_Alloc_block*, bitmap_allocator::_Alloc_block*> >; + template class __mini_vector::_Alloc_block*, + bitmap_allocator::_Alloc_block*> >; + template class __mini_vector; template size_t** __lower_bound diff --git a/libstdc++-v3/src/mt_allocator.cc b/libstdc++-v3/src/mt_allocator.cc index bb6ab89..9c94bc8 100644 --- a/libstdc++-v3/src/mt_allocator.cc +++ b/libstdc++-v3/src/mt_allocator.cc @@ -1,8 +1,8 @@ // Allocator details. -// Copyright (C) 2004 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005 Free Software Foundation, Inc. // -// This file is part of the GNU ISO C++ Librarbooly. This library is free +// 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 2, or (at your option) @@ -552,4 +552,5 @@ namespace __gnu_cxx // Instantiations. template class __mt_alloc; template class __mt_alloc; + template class __mt_alloc; } // namespace __gnu_cxx diff --git a/libstdc++-v3/src/pool_allocator.cc b/libstdc++-v3/src/pool_allocator.cc index 731cfff..1ad4e9c 100644 --- a/libstdc++-v3/src/pool_allocator.cc +++ b/libstdc++-v3/src/pool_allocator.cc @@ -170,4 +170,5 @@ namespace __gnu_cxx // Instantiations. template class __pool_alloc; template class __pool_alloc; + template class __pool_alloc; } // namespace __gnu_cxx -- cgit v1.1