aboutsummaryrefslogtreecommitdiff
path: root/arm_compute
diff options
context:
space:
mode:
Diffstat (limited to 'arm_compute')
-rw-r--r--arm_compute/core/Error.h6
-rw-r--r--arm_compute/core/utils/misc/Cast.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/arm_compute/core/Error.h b/arm_compute/core/Error.h
index f137be6ecb..64bfbd2787 100644
--- a/arm_compute/core/Error.h
+++ b/arm_compute/core/Error.h
@@ -347,4 +347,10 @@ Status create_error(ErrorCode error_code, const char *function, const char *file
#define ARM_COMPUTE_ERROR_ON_LOC(cond, func, file, line) \
ARM_COMPUTE_ERROR_ON_LOC_MSG(cond, func, file, line, #cond)
+#ifndef ARM_COMPUTE_EXCEPTIONS_DISABLED
+#define ARM_COMPUTE_THROW(ex) throw(ex)
+#else /* ARM_COMPUTE_EXCEPTIONS_DISABLED */
+#define ARM_COMPUTE_THROW(ex) (ex), std::abort()
+#endif /* ARM_COMPUTE_EXCEPTIONS_DISABLED */
+
#endif /* __ARM_COMPUTE_ERROR_H__ */
diff --git a/arm_compute/core/utils/misc/Cast.h b/arm_compute/core/utils/misc/Cast.h
index 5d9d1b0eca..ae594c96b4 100644
--- a/arm_compute/core/utils/misc/Cast.h
+++ b/arm_compute/core/utils/misc/Cast.h
@@ -48,7 +48,7 @@ inline Target polymorphic_cast(Source *v)
{
if(dynamic_cast<Target>(v) == nullptr)
{
- throw std::bad_cast();
+ ARM_COMPUTE_THROW(std::bad_cast());
}
return static_cast<Target>(v);
}
@@ -88,7 +88,7 @@ std::unique_ptr<Target, Deleter> polymorphic_cast_unique_ptr(std::unique_ptr<Sou
{
if(dynamic_cast<Target *>(v.get()) == nullptr)
{
- throw std::bad_cast();
+ ARM_COMPUTE_THROW(std::bad_cast());
}
auto r = static_cast<Target *>(v.release());
return std::unique_ptr<Target, Deleter>(r, std::move(v.get_deleter()));