re PR libstdc++/82558 (V8 JavaScript engine segfaults since r249235)

2017-10-16  François Dumont  <fdumont@gcc.gnu.org>

	PR libstdc++/82558
	* include/bits/stl_bvector.h (fill): Add iterator offset check.
	* testsuite/23_containers/vector/bool/82558.cc: New.

From-SVN: r253776
This commit is contained in:
François Dumont 2017-10-16 05:44:03 +00:00
parent 181640f627
commit 1be043a140
3 changed files with 39 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2017-10-16 François Dumont <fdumont@gcc.gnu.org>
PR libstdc++/82558
* include/bits/stl_bvector.h (fill): Add iterator offset check.
* testsuite/23_containers/vector/bool/82558.cc: New.
2017-10-13 Jonathan Wakely <jwakely@redhat.com>
PR libstdc++/82522

View File

@ -417,7 +417,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
if (__last._M_offset != 0)
__fill_bvector(__last._M_p, 0, __last._M_offset, __x);
}
else
else if (__first._M_offset != __last._M_offset)
__fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x);
}

View File

@ -0,0 +1,32 @@
// Copyright (C) 2017 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/>.
// 23.3.8 class vector<bool>
#include <vector>
// libstdc++/82558
void test01()
{
std::vector<bool> v;
std::fill(v.begin(), v.begin(), false);
}
int main()
{
test01();
}