From 37d2eaee4ebcb0dad8b59cc8ce3b6cfbdb9b599e Mon Sep 17 00:00:00 2001 From: Falk David Date: Wed, 18 Oct 2023 17:01:25 +0200 Subject: [PATCH] Fix: GPv3: Crash renaming a layer When renaming a layer to a (long) name that was already taken by another layer, Blender would crash. This was because the memory for the unique string was held by `std::string` which cannot grow. The solution is to use `char unique_name[MAX_NAME]`. --- source/blender/blenkernel/intern/grease_pencil.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/source/blender/blenkernel/intern/grease_pencil.cc b/source/blender/blenkernel/intern/grease_pencil.cc index 419d8857be4..9697b4f3233 100644 --- a/source/blender/blenkernel/intern/grease_pencil.cc +++ b/source/blender/blenkernel/intern/grease_pencil.cc @@ -2014,9 +2014,10 @@ static std::string unique_node_name(const GreasePencil &grease_pencil, blender::StringRefNull name) { using namespace blender; - std::string unique_name(name.c_str()); + char unique_name[MAX_NAME]; + BLI_strncpy(unique_name, name.c_str(), MAX_NAME); VectorSet names = get_node_names(grease_pencil); - unique_node_name_ex(names, default_name, unique_name.data()); + unique_node_name_ex(names, default_name, unique_name); return unique_name; }