Fix string escaping in override versioning and modifier renaming

This commit is contained in:
Campbell Barton
2022-04-26 13:46:02 +10:00
parent a003547a37
commit 3221766820
2 changed files with 14 additions and 7 deletions

View File

@@ -1295,8 +1295,10 @@ static void version_liboverride_rnacollections_insertion_object(Object *object)
if (object->pose != NULL) {
LISTBASE_FOREACH (bPoseChannel *, pchan, &object->pose->chanbase) {
char rna_path[FILE_MAXFILE];
BLI_snprintf(rna_path, sizeof(rna_path), "pose.bones[\"%s\"].constraints", pchan->name);
char rna_path[26 + (sizeof(pchan->name) * 2) + 1];
char name_esc[sizeof(pchan->name) * 2];
BLI_str_escape(name_esc, pchan->name, sizeof(name_esc));
SNPRINTF(rna_path, "pose.bones[\"%s\"].constraints", name_esc);
op = BKE_lib_override_library_property_find(liboverride, rna_path);
if (op != NULL) {
version_liboverride_rnacollections_insertion_object_constraints(&pchan->constraints, op);

View File

@@ -754,11 +754,13 @@ static char *rna_DashGpencilModifierSegment_path(PointerRNA *ptr)
BLI_assert(dmd != NULL);
char name_esc[sizeof(dmd->modifier.name) * 2 + 1];
char name_esc[sizeof(dmd->modifier.name) * 2];
BLI_str_escape(name_esc, dmd->modifier.name, sizeof(name_esc));
return BLI_sprintfN("grease_pencil_modifiers[\"%s\"].segments[\"%s\"]", name_esc, ds->name);
char ds_name_esc[sizeof(ds->name) * 2];
BLI_str_escape(ds_name_esc, ds->name, sizeof(ds_name_esc));
return BLI_sprintfN("grease_pencil_modifiers[\"%s\"].segments[\"%s\"]", name_esc, ds_name_esc);
}
static bool dash_segment_name_exists_fn(void *arg, const char *name)
@@ -785,8 +787,11 @@ static void rna_DashGpencilModifierSegment_name_set(PointerRNA *ptr, const char
BLI_uniquename_cb(
dash_segment_name_exists_fn, ds->dmd, "Segment", '.', ds->name, sizeof(ds->name));
char prefix[256];
sprintf(prefix, "grease_pencil_modifiers[\"%s\"].segments", ds->dmd->modifier.name);
char name_esc[sizeof(ds->dmd->modifier.name) * 2];
BLI_str_escape(name_esc, ds->dmd->modifier.name, sizeof(name_esc));
char prefix[36 + sizeof(name_esc) + 1];
SNPRINTF(prefix, "grease_pencil_modifiers[\"%s\"].segments", name_esc);
/* Fix all the animation data which may link to this. */
BKE_animdata_fix_paths_rename_all(NULL, prefix, oldname, ds->name);