diff options
| author | ondy-personal <98788662+ondy-personal@users.noreply.github.com> | 2022-01-31 17:12:45 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-31 17:12:45 -0800 |
| commit | 3d237fc7d7956bf805d005833dc1687971ee452a (patch) | |
| tree | ac4dd2fa712fd799b530851eb10285e4d954ad02 /include/godot_cpp | |
| parent | 4dddd0b55bc40b9e6222f5a5d25c0868b16bc86e (diff) | |
| download | redot-cpp-3d237fc7d7956bf805d005833dc1687971ee452a.tar.gz | |
Fixed crash when called methods return nullptr.
The returned value "ret" may be nullptr in which case the code would crash because "object_get_instance_binding" can't be called on nullptr input.
This should be very easy to reproduce, I encountered it pretty much any time I called a method that returned Ref<Something>. E.g.:
Ref<GeometryInstance3D> instance;
instance.instantiate();
instance.get_mesh(); // Crash because no mesh was set for the instance and the returned value was nullptr.
Diffstat (limited to 'include/godot_cpp')
| -rw-r--r-- | include/godot_cpp/core/engine_ptrcall.hpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/godot_cpp/core/engine_ptrcall.hpp b/include/godot_cpp/core/engine_ptrcall.hpp index 379d002..7ed258e 100644 --- a/include/godot_cpp/core/engine_ptrcall.hpp +++ b/include/godot_cpp/core/engine_ptrcall.hpp @@ -48,6 +48,9 @@ O *_call_native_mb_ret_obj(const GDNativeMethodBindPtr mb, void *instance, const GodotObject *ret = nullptr; std::array<const GDNativeTypePtr, sizeof...(Args)> mb_args = { { (const GDNativeTypePtr)args... } }; internal::gdn_interface->object_method_bind_ptrcall(mb, instance, mb_args.data(), &ret); + if (ret == nullptr) { + return nullptr; + } return reinterpret_cast<O *>(internal::gdn_interface->object_get_instance_binding(ret, internal::token, &O::___binding_callbacks)); } |
