From ace64dbf501609b6cd26118be209edec4e3295cb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 1 Apr 2024 22:10:27 +1100 Subject: [PATCH] Fix potential null pointer de-reference Refactoring & --- source/blender/blenkernel/intern/collection.cc | 3 +-- source/blender/blenkernel/intern/effect.cc | 4 ++-- source/blender/editors/interface/interface.cc | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/source/blender/blenkernel/intern/collection.cc b/source/blender/blenkernel/intern/collection.cc index 03e28b6a6b0..3d05bcad2f3 100644 --- a/source/blender/blenkernel/intern/collection.cc +++ b/source/blender/blenkernel/intern/collection.cc @@ -1359,8 +1359,6 @@ bool BKE_collection_object_add_notest(Main *bmain, Collection *collection, Objec return false; } - const int id_create_flag = (collection->id.tag & LIB_TAG_NO_MAIN) ? LIB_ID_CREATE_NO_MAIN : 0; - /* Only case where this pointer can be nullptr is when scene itself is linked, this case should * never be reached. */ BLI_assert(collection != nullptr); @@ -1368,6 +1366,7 @@ bool BKE_collection_object_add_notest(Main *bmain, Collection *collection, Objec return false; } + const int id_create_flag = (collection->id.tag & LIB_TAG_NO_MAIN) ? LIB_ID_CREATE_NO_MAIN : 0; if (!collection_object_add(bmain, collection, ob, nullptr, id_create_flag, true)) { return false; } diff --git a/source/blender/blenkernel/intern/effect.cc b/source/blender/blenkernel/intern/effect.cc index f20ca5c9056..7f0d0a0134e 100644 --- a/source/blender/blenkernel/intern/effect.cc +++ b/source/blender/blenkernel/intern/effect.cc @@ -700,9 +700,9 @@ bool get_effector_data(EffectorCache *eff, else if (eff->pd && eff->pd->shape == PFIELD_SHAPE_POINTS) { /* TODO: hair and points object support */ const Mesh *mesh_eval = BKE_object_get_evaluated_mesh(eff->ob); - const blender::Span positions = mesh_eval->vert_positions(); - const blender::Span vert_normals = mesh_eval->vert_normals(); if (mesh_eval != nullptr) { + const blender::Span positions = mesh_eval->vert_positions(); + const blender::Span vert_normals = mesh_eval->vert_normals(); copy_v3_v3(efd->loc, positions[*efd->index]); copy_v3_v3(efd->nor, vert_normals[*efd->index]); diff --git a/source/blender/editors/interface/interface.cc b/source/blender/editors/interface/interface.cc index 443f2e13d91..148d8b4a8d0 100644 --- a/source/blender/editors/interface/interface.cc +++ b/source/blender/editors/interface/interface.cc @@ -3110,7 +3110,7 @@ bool ui_but_string_set(bContext *C, uiBut *but, const char *str) { RNA_property_pointer_set(&but->rnapoin, but->rnaprop, rptr, nullptr); } - else if (search_but->item_active != nullptr) { + else if (search_but && search_but->item_active != nullptr) { rptr = RNA_pointer_create(nullptr, RNA_property_pointer_type(&but->rnapoin, but->rnaprop), search_but->item_active);