Relax Debug Mode assertions on operator-> for smart pointers.
* include/bits/shared_ptr_base.h (__shared_ptr::operator->): Change _GLIBCXX_DEBUG_ASSERT to _GLIBCXX_DEBUG_PEDASSERT. * include/bits/unique_ptr.h (unique_ptr::operator->): Likewise. * testsuite/20_util/shared_ptr/observers/get.cc: Test operator-> on empty shared_ptr. From-SVN: r227524
This commit is contained in:
parent
b11e7db713
commit
93023f35f7
4 changed files with 21 additions and 2 deletions
|
@ -1,5 +1,11 @@
|
||||||
2015-09-07 Jonathan Wakely <jwakely@redhat.com>
|
2015-09-07 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
* include/bits/shared_ptr_base.h (__shared_ptr::operator->): Change
|
||||||
|
_GLIBCXX_DEBUG_ASSERT to _GLIBCXX_DEBUG_PEDASSERT.
|
||||||
|
* include/bits/unique_ptr.h (unique_ptr::operator->): Likewise.
|
||||||
|
* testsuite/20_util/shared_ptr/observers/get.cc: Test operator-> on
|
||||||
|
empty shared_ptr.
|
||||||
|
|
||||||
* include/bits/regex_compiler.h (_BracketMatcher::_M_is_ready):
|
* include/bits/regex_compiler.h (_BracketMatcher::_M_is_ready):
|
||||||
Initialize using NSDMI and set using _GLIBCXX_DEBUG_ONLY.
|
Initialize using NSDMI and set using _GLIBCXX_DEBUG_ONLY.
|
||||||
|
|
||||||
|
|
|
@ -1054,7 +1054,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
_Tp*
|
_Tp*
|
||||||
operator->() const noexcept
|
operator->() const noexcept
|
||||||
{
|
{
|
||||||
_GLIBCXX_DEBUG_ASSERT(_M_ptr != 0);
|
_GLIBCXX_DEBUG_PEDASSERT(_M_ptr != 0);
|
||||||
return _M_ptr;
|
return _M_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||||
pointer
|
pointer
|
||||||
operator->() const noexcept
|
operator->() const noexcept
|
||||||
{
|
{
|
||||||
_GLIBCXX_DEBUG_ASSERT(get() != pointer());
|
_GLIBCXX_DEBUG_PEDASSERT(get() != pointer());
|
||||||
return get();
|
return get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,11 +63,24 @@ test03()
|
||||||
VERIFY( &p->i == &a->i );
|
VERIFY( &p->i == &a->i );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
test04()
|
||||||
|
{
|
||||||
|
bool test __attribute__((unused)) = true;
|
||||||
|
|
||||||
|
#if !(defined _GLIBCXX_DEBUG && defined _GLIBCXX_DEBUG_PEDANTIC)
|
||||||
|
std::shared_ptr<int> p;
|
||||||
|
auto np = p.operator->();
|
||||||
|
VERIFY( np == nullptr );
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
test01();
|
test01();
|
||||||
test02();
|
test02();
|
||||||
test03();
|
test03();
|
||||||
|
test04();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue