[Bug libstdc++/80893] std::vector<bool> creation dereferences null pointer
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue May 30 19:44:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80893
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This is actually a problem in vector<bool> though: it assumes allocate(0)
returns a non-null pointer, which is unspecified.
This should fix it:
--- a/libstdc++-v3/include/bits/stl_bvector.h
+++ b/libstdc++-v3/include/bits/stl_bvector.h
@@ -1091,7 +1091,7 @@ template<typename _Alloc>
{
_Bit_pointer __q = this->_M_allocate(__n);
this->_M_impl._M_end_of_storage = __q + _S_nword(__n);
- this->_M_impl._M_start = iterator(std::__addressof(*__q), 0);
+ this->_M_impl._M_start = iterator(__q ? std::__addressof(*__q) : 0, 0);
this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
}
More information about the Gcc-bugs
mailing list