diff --git a/include/rice/rice.hpp b/include/rice/rice.hpp index ddf79045..2ed571b3 100644 --- a/include/rice/rice.hpp +++ b/include/rice/rice.hpp @@ -1152,7 +1152,12 @@ namespace Rice::detail } std::any data = iter->second; - return std::any_cast(data); + auto* ptr = std::any_cast(&data); + if (!ptr) + { + rb_raise(rb_eRuntimeError, "Bad any cast for %s %s", rb_class2name(klass), rb_id2name(method_id)); + } + return *ptr; } } diff --git a/rice/detail/NativeRegistry.ipp b/rice/detail/NativeRegistry.ipp index ff7b8413..a5e80a9e 100644 --- a/rice/detail/NativeRegistry.ipp +++ b/rice/detail/NativeRegistry.ipp @@ -52,6 +52,11 @@ namespace Rice::detail } std::any data = iter->second; - return std::any_cast(data); + auto* ptr = std::any_cast(&data); + if (!ptr) + { + rb_raise(rb_eRuntimeError, "Bad any cast for %s %s", rb_class2name(klass), rb_id2name(method_id)); + } + return *ptr; } }