[libcxx] Throw correct exception from std::vector::reserve
According to the standard [vector.capacity]/5, std::vector<T>::reserve shall throw an exception of type std::length_error when the requested capacity exceeds max_size(). This behavior is not implemented correctly: the function 'reserve' simply propagates the exception from allocator<T>::allocate. Before D110846 that exception used to be of type std::length_error (which is correct for vector<T>::reserve, but incorrect for allocator<T>::allocate). This patch fixes the issue and adds regression tests. Reviewed By: Quuxplusone, ldionne, #libc Differential Revision: https://reviews.llvm.org/D112068
Loading
Please sign in to comment