summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2020-02-25 16:45:12 +0100
committerGitHub <noreply@github.com>2020-02-25 16:45:12 +0100
commitdace1ec9126c752792a0566cfd9485a8ad40c0d1 (patch)
tree8030a4387299f7dec6dbe63c43842fccf7a3f6d0 /scene
parent2f237d181b6fd769b52bded49cafc9bc5eb9f087 (diff)
parentd8ba07ea8f2a17e77549c56ce8eddcbc2fcead7c (diff)
Merge pull request #36532 from Faless/debugger/weakref_crash_vulkan
Fix debugger crash inspecting freed object.
Diffstat (limited to 'scene')
-rw-r--r--scene/debugger/scene_debugger.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/scene/debugger/scene_debugger.cpp b/scene/debugger/scene_debugger.cpp
index 9b9f0455a1..22ff0611a7 100644
--- a/scene/debugger/scene_debugger.cpp
+++ b/scene/debugger/scene_debugger.cpp
@@ -347,13 +347,17 @@ void SceneDebuggerObject::serialize(Array &r_arr, int p_max_size) {
const PropertyInfo &pi = properties[i].first;
Variant &var = properties[i].second;
- WeakRef *ref = Object::cast_to<WeakRef>(var);
- if (ref) {
- var = ref->get_ref();
- }
-
RES res = var;
+ if (var.get_type() == Variant::OBJECT && var.is_ref()) {
+ REF r = var;
+ if (r.is_valid()) {
+ res = *r;
+ } else {
+ res = RES();
+ }
+ }
+
Array prop;
prop.push_back(pi.name);
prop.push_back(pi.type);