summaryrefslogtreecommitdiff
path: root/libstdc++-v3/libsupc++/vec.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/libsupc++/vec.cc')
-rw-r--r--libstdc++-v3/libsupc++/vec.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/libstdc++-v3/libsupc++/vec.cc b/libstdc++-v3/libsupc++/vec.cc
index f9afd39df9b..507514ec76a 100644
--- a/libstdc++-v3/libsupc++/vec.cc
+++ b/libstdc++-v3/libsupc++/vec.cc
@@ -28,6 +28,7 @@
#include <cxxabi.h>
#include <new>
#include <exception>
+#include <cstdlib>
#include <bits/exception_defines.h>
#include "unwind-cxx.h"
@@ -65,10 +66,18 @@ namespace __cxxabiv1
std::size_t padding_size)
{
if (element_size && element_count > std::size_t(-1) / element_size)
+#ifdef __EXCEPTIONS
throw std::bad_alloc();
+#else
+ std::abort();
+#endif
std::size_t size = element_count * element_size;
if (size + padding_size < size)
+#ifdef __EXCEPTIONS
throw std::bad_alloc();
+#else
+ std::abort();
+#endif
return size + padding_size;
}
}