From ebef9f3de8d2eb1c3628a25fe3bd08aa59c8804d Mon Sep 17 00:00:00 2001 From: rdb Date: Wed, 19 Dec 2018 20:45:57 +0100 Subject: [PATCH] pgraph: add assertions to prevent invalid TransformState If this commit is causing crashes in your code, it is probably exposing a bug in some other system that is assigning bad TransformState objects. --- panda/src/pgraph/pandaNode.cxx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/panda/src/pgraph/pandaNode.cxx b/panda/src/pgraph/pandaNode.cxx index 7d53cbcaf7..1e3d427e28 100644 --- a/panda/src/pgraph/pandaNode.cxx +++ b/panda/src/pgraph/pandaNode.cxx @@ -1084,6 +1084,8 @@ set_effects(const RenderEffects *effects, Thread *current_thread) { */ void PandaNode:: set_transform(const TransformState *transform, Thread *current_thread) { + nassertv(!transform->is_invalid()); + // Need to have this held before we grab any other locks. LightMutexHolder holder(_dirty_prev_transforms._lock); @@ -1120,6 +1122,8 @@ set_transform(const TransformState *transform, Thread *current_thread) { */ void PandaNode:: set_prev_transform(const TransformState *transform, Thread *current_thread) { + nassertv(!transform->is_invalid()); + // Need to have this held before we grab any other locks. LightMutexHolder holder(_dirty_prev_transforms._lock); @@ -3849,6 +3853,9 @@ complete_pointers(TypedWritable **p_list, BamReader *manager) { // Mark the bounds stale. ++_next_update; + nassertr(!_transform->is_invalid(), pi); + nassertr(!_prev_transform->is_invalid(), pi); + return pi; }