Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-04-24 00:10:22 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-04-24 00:10:22 +0400
commit7dde3551853018147d99e9454abb337384e7a32e (patch)
treea0255cc50e7621d8387baf68af03bc0a6366ce6a /source
parent9afdda36893276321f7da9af94babf7a5b7b62fe (diff)
fix [#34958] keyframe many items would fail if there was a (") in the text.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c2
-rw-r--r--source/blender/blenkernel/intern/linestyle.c40
-rw-r--r--source/blender/editors/animation/drivers.c8
-rw-r--r--source/blender/makesrna/intern/rna_access.c19
-rw-r--r--source/blender/makesrna/intern/rna_armature.c17
-rw-r--r--source/blender/makesrna/intern/rna_boid.c7
-rw-r--r--source/blender/makesrna/intern/rna_cloth.c18
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c17
-rw-r--r--source/blender/makesrna/intern/rna_dynamicpaint.c14
-rw-r--r--source/blender/makesrna/intern/rna_fluidsim.c4
-rw-r--r--source/blender/makesrna/intern/rna_key.c16
-rw-r--r--source/blender/makesrna/intern/rna_linestyle.c20
-rw-r--r--source/blender/makesrna/intern/rna_mask.c5
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c73
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c6
-rw-r--r--source/blender/makesrna/intern/rna_nla.c8
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c19
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c28
-rw-r--r--source/blender/makesrna/intern/rna_particle.c5
-rw-r--r--source/blender/makesrna/intern/rna_pose.c6
-rw-r--r--source/blender/makesrna/intern/rna_scene.c5
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c61
-rw-r--r--source/blender/makesrna/intern/rna_smoke.c12
-rw-r--r--source/blender/makesrna/intern/rna_texture.c11
-rw-r--r--source/blender/makesrna/intern/rna_tracking.c7
25 files changed, 315 insertions, 113 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 48d83652f56..f3d5b838a0d 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -745,7 +745,7 @@ void BKE_animdata_fix_paths_rename(ID *owner_id, AnimData *adt, ID *ref_id, cons
/* NLA Data - Animation Data for Strips */
for (nlt = adt->nla_tracks.first; nlt; nlt = nlt->next)
nlastrips_path_rename_fix(owner_id, prefix, oldName, newName, oldN, newN, &nlt->strips, verify_paths);
-
+
/* free the temp names */
MEM_freeN(oldN);
MEM_freeN(newN);
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c
index 6a8061274f8..05ceb8f76ea 100644
--- a/source/blender/blenkernel/intern/linestyle.c
+++ b/source/blender/blenkernel/intern/linestyle.c
@@ -1018,25 +1018,29 @@ char *BKE_path_from_ID_to_color_ramp(FreestyleLineStyle *linestyle, ColorBand *c
for (m = (LineStyleModifier *)linestyle->color_modifiers.first; m; m = m->next) {
switch (m->type) {
- case LS_MODIFIER_ALONG_STROKE:
- if (color_ramp == ((LineStyleColorModifier_AlongStroke *)m)->color_ramp)
- found = true;
- break;
- case LS_MODIFIER_DISTANCE_FROM_CAMERA:
- if (color_ramp == ((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp)
- found = true;
- break;
- case LS_MODIFIER_DISTANCE_FROM_OBJECT:
- if (color_ramp == ((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp)
- found = true;
- break;
- case LS_MODIFIER_MATERIAL:
- if (color_ramp == ((LineStyleColorModifier_Material *)m)->color_ramp)
- found = true;
- break;
+ case LS_MODIFIER_ALONG_STROKE:
+ if (color_ramp == ((LineStyleColorModifier_AlongStroke *)m)->color_ramp)
+ found = true;
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_CAMERA:
+ if (color_ramp == ((LineStyleColorModifier_DistanceFromCamera *)m)->color_ramp)
+ found = true;
+ break;
+ case LS_MODIFIER_DISTANCE_FROM_OBJECT:
+ if (color_ramp == ((LineStyleColorModifier_DistanceFromObject *)m)->color_ramp)
+ found = true;
+ break;
+ case LS_MODIFIER_MATERIAL:
+ if (color_ramp == ((LineStyleColorModifier_Material *)m)->color_ramp)
+ found = true;
+ break;
+ }
+
+ if (found) {
+ char name_esc[sizeof(m->name) * 2];
+ BLI_strescape(name_esc, m->name, sizeof(name_esc));
+ return BLI_sprintfN("color_modifiers[\"%s\"].color_ramp", name_esc);
}
- if (found)
- return BLI_sprintfN("color_modifiers[\"%s\"].color_ramp", m->name);
}
printf("BKE_path_from_ID_to_color_ramp: No color ramps correspond to the given pointer.\n");
return NULL;
diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c
index d9965ebdcac..ef15e254048 100644
--- a/source/blender/editors/animation/drivers.c
+++ b/source/blender/editors/animation/drivers.c
@@ -434,11 +434,17 @@ static char *get_driver_path_hack(bContext *C, PointerRNA *ptr, PropertyRNA *pro
/* assumes: texture will only be shown if it is active material's active texture it's ok */
if ((ID *)tex == id) {
+ char name_esc_ma[(sizeof(ma->id.name) - 2) * 2];
+ char name_esc_tex[(sizeof(tex->id.name) - 2) * 2];
+
+ BLI_strescape(name_esc_ma, ma->id.name + 2, sizeof(name_esc_ma));
+ BLI_strescape(name_esc_tex, tex->id.name + 2, sizeof(name_esc_tex));
+
/* create new path */
// TODO: use RNA path functions to construct step by step instead?
// FIXME: maybe this isn't even needed anymore...
path = BLI_sprintfN("material_slots[\"%s\"].material.texture_slots[\"%s\"].texture.%s",
- ma->id.name + 2, tex->id.name + 2, basepath);
+ name_esc_ma, name_esc_tex, basepath);
/* free old one */
MEM_freeN(basepath);
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index 9a102c823a9..cfdfbf4e687 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -4325,14 +4325,25 @@ char *RNA_path_from_ID_to_property(PointerRNA *ptr, PropertyRNA *prop)
propname = RNA_property_identifier(prop);
if (ptrpath) {
- path = BLI_sprintfN(is_rna ? "%s.%s" : "%s[\"%s\"]", ptrpath, propname);
+ if (is_rna) {
+ path = BLI_sprintfN("%s.%s", ptrpath, propname);
+ }
+ else {
+ char propname_esc[MAX_IDPROP_NAME * 2];
+ BLI_strescape(propname_esc, propname, sizeof(propname_esc));
+ path = BLI_sprintfN("%s[\"%s\"]", ptrpath, propname_esc);
+ }
MEM_freeN(ptrpath);
}
else if (RNA_struct_is_ID(ptr->type)) {
- if (is_rna)
+ if (is_rna) {
path = BLI_strdup(propname);
- else
- path = BLI_sprintfN("[\"%s\"]", propname);
+ }
+ else {
+ char propname_esc[MAX_IDPROP_NAME * 2];
+ BLI_strescape(propname_esc, propname, sizeof(propname_esc));
+ path = BLI_sprintfN("[\"%s\"]", propname_esc);
+ }
}
else {
path = NULL;
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c
index 1bc6c7e4f6f..b222dd9148b 100644
--- a/source/blender/makesrna/intern/rna_armature.c
+++ b/source/blender/makesrna/intern/rna_armature.c
@@ -191,20 +191,23 @@ static void rna_Bone_select_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Po
static char *rna_Bone_path(PointerRNA *ptr)
{
+ ID *id = ptr->id.data;
Bone *bone = (Bone *)ptr->data;
+ char name_esc[sizeof(bone->name) * 2];
+ BLI_strescape(name_esc, bone->name, sizeof(name_esc));
+
/* special exception for trying to get the path where ID-block is Object
- * - this will be assumed to be from a Pose Bone...
+ * - this will be assumed to be from a Pose Bone...
*/
- if (ptr->id.data) {
- ID *id = (ID *)ptr->id.data;
-
- if (GS(id->name) == ID_OB)
- return BLI_sprintfN("pose.bones[\"%s\"].bone", bone->name);
+ if (id) {
+ if (GS(id->name) == ID_OB) {
+ return BLI_sprintfN("pose.bones[\"%s\"].bone", name_esc);
+ }
}
/* from armature... */
- return BLI_sprintfN("bones[\"%s\"]", bone->name);
+ return BLI_sprintfN("bones[\"%s\"]", name_esc);
}
static IDProperty *rna_Bone_idprops(PointerRNA *ptr, bool create)
diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c
index 9d44ae87b57..9b2ce863108 100644
--- a/source/blender/makesrna/intern/rna_boid.c
+++ b/source/blender/makesrna/intern/rna_boid.c
@@ -142,7 +142,12 @@ static StructRNA *rna_BoidRule_refine(struct PointerRNA *ptr)
static char *rna_BoidRule_path(PointerRNA *ptr)
{
- return BLI_sprintfN("rules[\"%s\"]", ((BoidRule *)ptr->data)->name); /* XXX not unique */
+ BoidRule *rule = (BoidRule *)ptr->data;
+ char name_esc[sizeof(rule->name) * 2];
+
+ BLI_strescape(name_esc, rule->name, sizeof(name_esc));
+
+ return BLI_sprintfN("rules[\"%s\"]", name_esc); /* XXX not unique */
}
static PointerRNA rna_BoidState_active_boid_rule_get(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c
index 74b0f69c9b8..d5c63800aea 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -212,7 +212,14 @@ static char *rna_ClothSettings_path(PointerRNA *ptr)
Object *ob = (Object *)ptr->id.data;
ModifierData *md = modifiers_findByType(ob, eModifierType_Cloth);
- return md ? BLI_sprintfN("modifiers[\"%s\"].settings", md->name) : NULL;
+ if (md) {
+ char name_esc[sizeof(md->name) * 2];
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].settings", name_esc);
+ }
+ else {
+ return NULL;
+ }
}
static char *rna_ClothCollisionSettings_path(PointerRNA *ptr)
@@ -220,7 +227,14 @@ static char *rna_ClothCollisionSettings_path(PointerRNA *ptr)
Object *ob = (Object *)ptr->id.data;
ModifierData *md = modifiers_findByType(ob, eModifierType_Cloth);
- return md ? BLI_sprintfN("modifiers[\"%s\"].collision_settings", md->name) : NULL;
+ if (md) {
+ char name_esc[sizeof(md->name) * 2];
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].collision_settings", name_esc);
+ }
+ else {
+ return NULL;
+ }
}
#else
diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c
index c96ea72fee2..05d4c5a59d2 100644
--- a/source/blender/makesrna/intern/rna_constraint.c
+++ b/source/blender/makesrna/intern/rna_constraint.c
@@ -251,14 +251,21 @@ static char *rna_Constraint_path(PointerRNA *ptr)
ListBase *lb = get_constraint_lb(ob, con, &pchan);
if (lb == NULL)
- printf("rna_Constraint_path: internal error, constraint '%s' not found in object '%s'\n",
- con->name, ob->id.name);
+ printf("%s: internal error, constraint '%s' not found in object '%s'\n",
+ __func__, con->name, ob->id.name);
if (pchan) {
- return BLI_sprintfN("pose.bones[\"%s\"].constraints[\"%s\"]", pchan->name, con->name);
+ char name_esc_pchan[sizeof(pchan->name) * 2];
+ char name_esc_const[sizeof(con->name) * 2];
+ BLI_strescape(name_esc_pchan, pchan->name, sizeof(name_esc_pchan));
+ BLI_strescape(name_esc_const, con->name, sizeof(name_esc_const));
+ return BLI_sprintfN("pose.bones[\"%s\"].constraints[\"%s\"]", name_esc_pchan, name_esc_const);
+ }
+ else {
+ char name_esc_const[sizeof(con->name) * 2];
+ BLI_strescape(name_esc_const, con->name, sizeof(name_esc_const));
+ return BLI_sprintfN("constraints[\"%s\"]", name_esc_const);
}
-
- return BLI_sprintfN("constraints[\"%s\"]", con->name);
}
static void rna_Constraint_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_dynamicpaint.c b/source/blender/makesrna/intern/rna_dynamicpaint.c
index 1e5bcad1384..900ae5122ef 100644
--- a/source/blender/makesrna/intern/rna_dynamicpaint.c
+++ b/source/blender/makesrna/intern/rna_dynamicpaint.c
@@ -62,24 +62,32 @@ static char *rna_DynamicPaintCanvasSettings_path(PointerRNA *ptr)
{
DynamicPaintCanvasSettings *settings = (DynamicPaintCanvasSettings *)ptr->data;
ModifierData *md = (ModifierData *)settings->pmd;
+ char name_esc[sizeof(md->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].canvas_settings", md->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].canvas_settings", name_esc);
}
static char *rna_DynamicPaintBrushSettings_path(PointerRNA *ptr)
{
DynamicPaintBrushSettings *settings = (DynamicPaintBrushSettings *)ptr->data;
ModifierData *md = (ModifierData *)settings->pmd;
+ char name_esc[sizeof(md->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].brush_settings", md->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].brush_settings", name_esc);
}
static char *rna_DynamicPaintSurface_path(PointerRNA *ptr)
{
DynamicPaintSurface *surface = (DynamicPaintSurface *)ptr->data;
ModifierData *md = (ModifierData *)surface->canvas->pmd;
+ char name_esc[sizeof(md->name) * 2];
+ char name_esc_surface[sizeof(surface->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].canvas_settings.canvas_surfaces[\"%s\"]", md->name, surface->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ BLI_strescape(name_esc_surface, surface->name, sizeof(name_esc_surface));
+ return BLI_sprintfN("modifiers[\"%s\"].canvas_settings.canvas_surfaces[\"%s\"]", name_esc, name_esc_surface);
}
diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c
index 45ce3676b5a..923e52e29c0 100644
--- a/source/blender/makesrna/intern/rna_fluidsim.c
+++ b/source/blender/makesrna/intern/rna_fluidsim.c
@@ -197,8 +197,10 @@ static char *rna_FluidSettings_path(PointerRNA *ptr)
{
FluidsimSettings *fss = (FluidsimSettings *)ptr->data;
ModifierData *md = (ModifierData *)fss->fmd;
+ char name_esc[sizeof(md->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].settings", md->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].settings", name_esc);
}
static void rna_FluidMeshVertex_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c
index b84436820b8..4e8b8d7b1a7 100644
--- a/source/blender/makesrna/intern/rna_key.c
+++ b/source/blender/makesrna/intern/rna_key.c
@@ -351,11 +351,14 @@ static char *rna_ShapeKey_path(PointerRNA *ptr)
{
KeyBlock *kb = (KeyBlock *)ptr->data;
ID *id = ptr->id.data;
-
+ char name_esc[sizeof(kb->name) * 2];
+
+ BLI_strescape(name_esc, kb->name, sizeof(name_esc));
+
if ((id) && (GS(id->name) != ID_KE))
- return BLI_sprintfN("shape_keys.key_blocks[\"%s\"]", kb->name);
+ return BLI_sprintfN("shape_keys.key_blocks[\"%s\"]", name_esc);
else
- return BLI_sprintfN("key_blocks[\"%s\"]", kb->name);
+ return BLI_sprintfN("key_blocks[\"%s\"]", name_esc);
}
static void rna_Key_update_data(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)
@@ -436,12 +439,15 @@ static char *rna_ShapeKeyPoint_path(PointerRNA *ptr)
kb = rna_ShapeKeyData_find_keyblock(key, point);
if (kb) {
+ char name_esc_kb[sizeof(kb->name) * 2];
int index = rna_ShapeKeyPoint_get_index(key, kb, point);
+
+ BLI_strescape(name_esc_kb, kb->name, sizeof(name_esc_kb));
if (GS(id->name) == ID_KE)
- return BLI_sprintfN("key_blocks[\"%s\"].data[%d]", kb->name, index);
+ return BLI_sprintfN("key_blocks[\"%s\"].data[%d]", name_esc_kb, index);
else
- return BLI_sprintfN("shape_keys.key_blocks[\"%s\"].data[%d]", kb->name, index);
+ return BLI_sprintfN("shape_keys.key_blocks[\"%s\"].data[%d]", name_esc_kb, index);
}
else
return NULL; /* XXX: there's really no way to resolve this... */
diff --git a/source/blender/makesrna/intern/rna_linestyle.c b/source/blender/makesrna/intern/rna_linestyle.c
index 5db9329cd27..660ef57dbfe 100644
--- a/source/blender/makesrna/intern/rna_linestyle.c
+++ b/source/blender/makesrna/intern/rna_linestyle.c
@@ -179,22 +179,34 @@ static StructRNA *rna_LineStyle_geometry_modifier_refine(struct PointerRNA *ptr)
static char *rna_LineStyle_color_modifier_path(PointerRNA *ptr)
{
- return BLI_sprintfN("color_modifiers[\"%s\"]", ((LineStyleModifier *)ptr->data)->name);
+ LineStyleModifier *m = (LineStyleModifier *)ptr->data;
+ char name_esc[sizeof(m->name) * 2];
+ BLI_strescape(name_esc, m->name, sizeof(name_esc));
+ return BLI_sprintfN("color_modifiers[\"%s\"]", name_esc);
}
static char *rna_LineStyle_alpha_modifier_path(PointerRNA *ptr)
{
- return BLI_sprintfN("alpha_modifiers[\"%s\"]", ((LineStyleModifier *)ptr->data)->name);
+ LineStyleModifier *m = (LineStyleModifier *)ptr->data;
+ char name_esc[sizeof(m->name) * 2];
+ BLI_strescape(name_esc, m->name, sizeof(name_esc));
+ return BLI_sprintfN("alpha_modifiers[\"%s\"]", name_esc);
}
static char *rna_LineStyle_thickness_modifier_path(PointerRNA *ptr)
{
- return BLI_sprintfN("thickness_modifiers[\"%s\"]", ((LineStyleModifier *)ptr->data)->name);
+ LineStyleModifier *m = (LineStyleModifier *)ptr->data;
+ char name_esc[sizeof(m->name) * 2];
+ BLI_strescape(name_esc, m->name, sizeof(name_esc));
+ return BLI_sprintfN("thickness_modifiers[\"%s\"]", name_esc);
}
static char *rna_LineStyle_geometry_modifier_path(PointerRNA *ptr)
{
- return BLI_sprintfN("geometry_modifiers[\"%s\"]", ((LineStyleModifier *)ptr->data)->name);
+ LineStyleModifier *m = (LineStyleModifier *)ptr->data;
+ char name_esc[sizeof(m->name) * 2];
+ BLI_strescape(name_esc, m->name, sizeof(name_esc));
+ return BLI_sprintfN("geometry_modifiers[\"%s\"]", name_esc);
}
static void rna_LineStyleColorModifier_name_set(PointerRNA *ptr, const char *value)
diff --git a/source/blender/makesrna/intern/rna_mask.c b/source/blender/makesrna/intern/rna_mask.c
index c47b81ec9ca..6d43f529e65 100644
--- a/source/blender/makesrna/intern/rna_mask.c
+++ b/source/blender/makesrna/intern/rna_mask.c
@@ -168,7 +168,10 @@ static void rna_Mask_layer_active_index_range(PointerRNA *ptr, int *min, int *ma
static char *rna_MaskLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("layers[\"%s\"]", ((MaskLayer *)ptr->data)->name);
+ MaskLayer *masklay = (MaskLayer *)ptr->data;
+ char name_esc[sizeof(masklay->name) * 2];
+ BLI_strescape(name_esc, masklay->name, sizeof(name_esc));
+ return BLI_sprintfN("layers[\"%s\"]", name_esc);
}
static PointerRNA rna_Mask_layer_active_get(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index be058bbfb4c..c5160cbd6e0 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -562,7 +562,10 @@ DEFINE_CUSTOMDATA_LAYER_COLLECTION_ACTIVEITEM(uv_layer, ldata, CD_MLOOPUV, rende
static char *rna_MeshUVLoopLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("uv_layers[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("uv_layers[\"%s\"]", name_esc);
}
static void rna_MeshUVLoopLayer_data_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
@@ -879,7 +882,10 @@ DEFINE_CUSTOMDATA_LAYER_COLLECTION(skin_vertice, vdata, CD_MVERT_SKIN);
static char *rna_MeshSkinVertexLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("skin_vertices[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("skin_vertices[\"%s\"]", name_esc);
}
static char *rna_VertCustomData_data_path(PointerRNA *ptr, char *collection, int type);
@@ -1101,12 +1107,18 @@ static char *rna_MeshVertex_path(PointerRNA *ptr)
static char *rna_MeshTextureFaceLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("tessface_uv_textures[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("tessface_uv_textures[\"%s\"]", name_esc);
}
static char *rna_MeshTexturePolyLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("uv_textures[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("uv_textures[\"%s\"]", name_esc);
}
static char *rna_VertCustomData_data_path(PointerRNA *ptr, char *collection, int type)
@@ -1119,8 +1131,11 @@ static char *rna_VertCustomData_data_path(PointerRNA *ptr, char *collection, int
for (cdl = vdata->layers, a = 0; a < vdata->totlayer; cdl++, a++) {
if (cdl->type == type) {
b = ((char *)ptr->data - ((char *)cdl->data)) / CustomData_sizeof(type);
- if (b >= 0 && b < totvert)
- return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, cdl->name, b);
+ if (b >= 0 && b < totvert) {
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, name_esc, b);
+ }
}
}
@@ -1137,8 +1152,11 @@ static char *rna_PolyCustomData_data_path(PointerRNA *ptr, char *collection, int
for (cdl = pdata->layers, a = 0; a < pdata->totlayer; cdl++, a++) {
if (cdl->type == type) {
b = ((char *)ptr->data - ((char *)cdl->data)) / CustomData_sizeof(type);
- if (b >= 0 && b < totpoly)
- return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, cdl->name, b);
+ if (b >= 0 && b < totpoly) {
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, name_esc, b);
+ }
}
}
@@ -1155,8 +1173,11 @@ static char *rna_LoopCustomData_data_path(PointerRNA *ptr, char *collection, int
for (cdl = ldata->layers, a = 0; a < ldata->totlayer; cdl++, a++) {
if (cdl->type == type) {
b = ((char *)ptr->data - ((char *)cdl->data)) / CustomData_sizeof(type);
- if (b >= 0 && b < totloop)
- return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, cdl->name, b);
+ if (b >= 0 && b < totloop) {
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, name_esc, b);
+ }
}
}
@@ -1173,8 +1194,11 @@ static char *rna_FaceCustomData_data_path(PointerRNA *ptr, char *collection, int
for (cdl = fdata->layers, a = 0; a < fdata->totlayer; cdl++, a++) {
if (cdl->type == type) {
b = ((char *)ptr->data - ((char *)cdl->data)) / CustomData_sizeof(type);
- if (b >= 0 && b < totloop)
- return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, cdl->name, b);
+ if (b >= 0 && b < totloop) {
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("%s[\"%s\"].data[%d]", collection, name_esc, b);
+ }
}
}
@@ -1198,12 +1222,18 @@ static char *rna_MeshTexturePoly_path(PointerRNA *ptr)
static char *rna_MeshColorLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("tessface_vertex_colors[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("tessface_vertex_colors[\"%s\"]", name_esc);
}
static char *rna_MeshLoopColorLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("vertex_colors[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("vertex_colors[\"%s\"]", name_esc);
}
static char *rna_MeshColor_path(PointerRNA *ptr)
@@ -1213,7 +1243,10 @@ static char *rna_MeshColor_path(PointerRNA *ptr)
static char *rna_MeshIntPropertyLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("int_layers[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("int_layers[\"%s\"]", name_esc);
}
static char *rna_MeshIntProperty_path(PointerRNA *ptr)
@@ -1223,7 +1256,10 @@ static char *rna_MeshIntProperty_path(PointerRNA *ptr)
static char *rna_MeshFloatPropertyLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("float_layers[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("float_layers[\"%s\"]", name_esc);
}
static char *rna_MeshFloatProperty_path(PointerRNA *ptr)
@@ -1233,7 +1269,10 @@ static char *rna_MeshFloatProperty_path(PointerRNA *ptr)
static char *rna_MeshStringPropertyLayer_path(PointerRNA *ptr)
{
- return BLI_sprintfN("string_layers[\"%s\"]", ((CustomDataLayer *)ptr->data)->name);
+ CustomDataLayer *cdl = ptr->data;
+ char name_esc[sizeof(cdl->name) * 2];
+ BLI_strescape(name_esc, cdl->name, sizeof(name_esc));
+ return BLI_sprintfN("string_layers[\"%s\"]", name_esc);
}
static char *rna_MeshStringProperty_path(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 618feae57d4..d84c3fa039f 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -255,7 +255,11 @@ static void rna_Modifier_name_set(PointerRNA *ptr, const char *value)
static char *rna_Modifier_path(PointerRNA *ptr)
{
- return BLI_sprintfN("modifiers[\"%s\"]", ((ModifierData *)ptr->data)->name);
+ ModifierData *md = ptr->data;
+ char name_esc[sizeof(md->name) * 2];
+
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"]", name_esc);
}
static void rna_Modifier_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_nla.c b/source/blender/makesrna/intern/rna_nla.c
index 9afaad96019..3bf6c11d935 100644
--- a/source/blender/makesrna/intern/rna_nla.c
+++ b/source/blender/makesrna/intern/rna_nla.c
@@ -84,7 +84,13 @@ static char *rna_NlaStrip_path(PointerRNA *ptr)
for (nls = nlt->strips.first; nls; nls = nls->next) {
if (nls == strip) {
/* XXX but if we animate like this, the control will never work... */
- return BLI_sprintfN("animation_data.nla_tracks[\"%s\"].strips[\"%s\"]", nlt->name, strip->name);
+ char name_esc_nlt[sizeof(nlt->name) * 2];
+ char name_esc_strip[sizeof(strip->name) * 2];
+
+ BLI_strescape(name_esc_nlt, nlt->name, sizeof(name_esc_nlt));
+ BLI_strescape(name_esc_strip, strip->name, sizeof(name_esc_strip));
+ return BLI_sprintfN("animation_data.nla_tracks[\"%s\"].strips[\"%s\"]",
+ name_esc_nlt, name_esc_strip);
}
}
}
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 85c3c9d6b65..fad66a5e7ed 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -1071,8 +1071,10 @@ static StructRNA *rna_Node_refine(struct PointerRNA *ptr)
static char *rna_Node_path(PointerRNA *ptr)
{
bNode *node = (bNode *)ptr->data;
+ char name_esc[sizeof(node->name) * 2];
- return BLI_sprintfN("nodes[\"%s\"]", node->name);
+ BLI_strescape(name_esc, node->name, sizeof(name_esc));
+ return BLI_sprintfN("nodes[\"%s\"]", name_esc);
}
static int rna_Node_poll(bNodeType *ntype, bNodeTree *ntree)
@@ -1818,16 +1820,19 @@ static char *rna_NodeSocket_path(PointerRNA *ptr)
bNodeSocket *sock = (bNodeSocket *)ptr->data;
bNode *node;
int socketindex;
+ char name_esc[sizeof(node->name) * 2];
if (!nodeFindNode(ntree, sock, &node, &socketindex))
return NULL;
- if (sock->in_out == SOCK_IN)
- return BLI_sprintfN("nodes[\"%s\"].inputs[%d]", node->name, socketindex);
- else
- return BLI_sprintfN("nodes[\"%s\"].outputs[%d]", node->name, socketindex);
-
- return NULL;
+ BLI_strescape(name_esc, node->name, sizeof(name_esc));
+
+ if (sock->in_out == SOCK_IN) {
+ return BLI_sprintfN("nodes[\"%s\"].inputs[%d]", name_esc, socketindex);
+ }
+ else {
+ return BLI_sprintfN("nodes[\"%s\"].outputs[%d]", name_esc, socketindex);
+ }
}
static IDProperty *rna_NodeSocket_idprops(PointerRNA *ptr, bool create)
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index ab8b54334fe..2d3f2ddf699 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -320,7 +320,10 @@ static char *rna_CollisionSettings_path(PointerRNA *UNUSED(ptr))
ModifierData *md = (ModifierData *)modifiers_findByType(ob, eModifierType_Collision);
if (md) {
- return BLI_sprintfN("modifiers[\"%s\"].settings", md->name);
+ char name_esc[sizeof(md->name) * 2];
+
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].settings", name_esc);
}
else {
return BLI_strdup("");
@@ -462,8 +465,10 @@ static char *rna_SoftBodySettings_path(PointerRNA *ptr)
{
Object *ob = (Object *)ptr->id.data;
ModifierData *md = (ModifierData *)modifiers_findByType(ob, eModifierType_Softbody);
-
- return BLI_sprintfN("modifiers[\"%s\"].settings", md->name);
+ char name_esc[sizeof(md->name) * 2];
+
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].settings", name_esc);
}
static int particle_id_check(PointerRNA *ptr)
@@ -613,13 +618,16 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr)
else {
Object *ob = (Object *)ptr->id.data;
ModifierData *md;
+ char name_esc[sizeof(md->name) * 2];
+
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
/* check softbody modifier */
md = (ModifierData *)modifiers_findByType(ob, eModifierType_Softbody);
if (md) {
/* no pointer from modifier data to actual softbody storage, would be good to add */
if (ob->soft->effector_weights == ew)
- return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", md->name);
+ return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
}
/* check cloth modifier */
@@ -628,7 +636,7 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr)
ClothModifierData *cmd = (ClothModifierData *)md;
if (cmd->sim_parms->effector_weights == ew)
- return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", md->name);
+ return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
}
/* check smoke modifier */
@@ -637,7 +645,7 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr)
SmokeModifierData *smd = (SmokeModifierData *)md;
if (smd->domain->effector_weights == ew)
- return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", md->name);
+ return BLI_sprintfN("modifiers[\"%s\"].settings.effector_weights", name_esc);
}
/* check dynamic paint modifier */
@@ -649,9 +657,13 @@ static char *rna_EffectorWeight_path(PointerRNA *ptr)
DynamicPaintSurface *surface = pmd->canvas->surfaces.first;
for (; surface; surface = surface->next) {
- if (surface->effector_weights == ew)
+ if (surface->effector_weights == ew) {
+ char name_esc_surface[sizeof(surface->name) * 2];
+
+ BLI_strescape(name_esc_surface, surface->name, sizeof(name_esc_surface));
return BLI_sprintfN("modifiers[\"%s\"].canvas_settings.canvas_surfaces[\"%s\"]"
- ".effector_weights", md->name, surface->name);
+ ".effector_weights", name_esc, name_esc_surface);
+ }
}
}
}
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index 9208f1273fc..140b9d74d06 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -1196,7 +1196,10 @@ static void psys_vg_name_set__internal(PointerRNA *ptr, const char *value, int i
static char *rna_ParticleSystem_path(PointerRNA *ptr)
{
ParticleSystem *psys = (ParticleSystem *)ptr->data;
- return BLI_sprintfN("particle_systems[\"%s\"]", psys->name);
+ char name_esc[sizeof(psys->name) * 2];
+
+ BLI_strescape(name_esc, psys->name, sizeof(name_esc));
+ return BLI_sprintfN("particle_systems[\"%s\"]", name_esc);
}
static void rna_ParticleSettings_mtex_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 0a19d7b5250..8c73aacc724 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -133,7 +133,11 @@ static void rna_Pose_IK_update(Main *UNUSED(bmain), Scene *UNUSED(scene), Pointe
static char *rna_PoseBone_path(PointerRNA *ptr)
{
- return BLI_sprintfN("pose.bones[\"%s\"]", ((bPoseChannel *)ptr->data)->name);
+ bPoseChannel *pchan = ptr->data;
+ char name_esc[sizeof(pchan->name) * 2];
+
+ BLI_strescape(name_esc, pchan->name, sizeof(name_esc));
+ return BLI_sprintfN("pose.bones[\"%s\"]", name_esc);
}
/* shared for actions groups and bone groups */
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index e589bde0744..0d224469b4e 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -1138,7 +1138,10 @@ static void rna_SceneRenderLayer_name_set(PointerRNA *ptr, const char *value)
static char *rna_SceneRenderLayer_path(PointerRNA *ptr)
{
SceneRenderLayer *srl = (SceneRenderLayer *)ptr->data;
- return BLI_sprintfN("render.layers[\"%s\"]", srl->name);
+ char name_esc[sizeof(srl->name) * 2];
+
+ BLI_strescape(name_esc, srl->name, sizeof(name_esc));
+ return BLI_sprintfN("render.layers[\"%s\"]", name_esc);
}
static int rna_RenderSettings_multiple_engines_get(PointerRNA *UNUSED(ptr))
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index 4d785611038..e522b73039b 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -342,10 +342,15 @@ static char *rna_SequenceTransform_path(PointerRNA *ptr)
Editing *ed = BKE_sequencer_editing_get(scene, FALSE);
Sequence *seq = sequence_get_by_transform(ed, ptr->data);
- if (seq && seq->name + 2)
- return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].transform", seq->name + 2);
- else
+ if (seq && seq->name + 2) {
+ char name_esc[(sizeof(seq->name) - 2) * 2];
+
+ BLI_strescape(name_esc, seq->name + 2, sizeof(name_esc));
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].transform", name_esc);
+ }
+ else {
return BLI_strdup("");
+ }
}
static void rna_SequenceTransform_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
@@ -387,10 +392,15 @@ static char *rna_SequenceCrop_path(PointerRNA *ptr)
Editing *ed = BKE_sequencer_editing_get(scene, FALSE);
Sequence *seq = sequence_get_by_crop(ed, ptr->data);
- if (seq && seq->name + 2)
- return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].crop", seq->name + 2);
- else
+ if (seq && seq->name + 2) {
+ char name_esc[(sizeof(seq->name) - 2) * 2];
+
+ BLI_strescape(name_esc, seq->name + 2, sizeof(name_esc));
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].crop", name_esc);
+ }
+ else {
return BLI_strdup("");
+ }
}
static void rna_SequenceCrop_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
@@ -501,10 +511,15 @@ static char *rna_Sequence_path(PointerRNA *ptr)
/* sequencer data comes from scene...
* TODO: would be nice to make SequenceEditor data a datablock of its own (for shorter paths)
*/
- if (seq->name + 2)
- return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"]", seq->name + 2);
- else
+ if (seq->name + 2) {
+ char name_esc[(sizeof(seq->name) - 2) * 2];
+
+ BLI_strescape(name_esc, seq->name + 2, sizeof(name_esc));
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"]", name_esc);
+ }
+ else {
return BLI_strdup("");
+ }
}
static PointerRNA rna_SequenceEditor_meta_stack_get(CollectionPropertyIterator *iter)
@@ -754,13 +769,23 @@ static char *rna_SequenceColorBalance_path(PointerRNA *ptr)
Sequence *seq = sequence_get_by_colorbalance(ed, ptr->data, &smd);
if (seq && seq->name + 2) {
+ char name_esc[(sizeof(seq->name) - 2) * 2];
+
+ BLI_strescape(name_esc, seq->name + 2, sizeof(name_esc));
+
if (!smd) {
/* path to old filter color balance */
- return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].color_balance", seq->name + 2);
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].color_balance", name_esc);
}
else {
/* path to modifier */
- return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].modifiers[\"%s\"].color_balance", seq->name + 2, smd->name);
+ char name_esc[(sizeof(seq->name) - 2) * 2];
+ char name_esc_smd[sizeof(smd->name) * 2];
+
+ BLI_strescape(name_esc, seq->name + 2, sizeof(name_esc));
+ BLI_strescape(name_esc_smd, smd->name, sizeof(name_esc_smd));
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].modifiers[\"%s\"].color_balance",
+ name_esc, name_esc_smd);
}
}
else
@@ -895,10 +920,18 @@ static char *rna_SequenceModifier_path(PointerRNA *ptr)
SequenceModifierData *smd = ptr->data;
Sequence *seq = sequence_get_by_modifier(ed, smd);
- if (seq && seq->name + 2)
- return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].modifiers[\"%s\"]", seq->name + 2, smd->name);
- else
+ if (seq && seq->name + 2) {
+ char name_esc[(sizeof(seq->name) - 2) * 2];
+ char name_esc_smd[sizeof(smd->name) * 2];
+
+ BLI_strescape(name_esc, seq->name + 2, sizeof(name_esc));
+ BLI_strescape(name_esc_smd, smd->name, sizeof(name_esc_smd));
+ return BLI_sprintfN("sequence_editor.sequences_all[\"%s\"].modifiers[\"%s\"]",
+ name_esc, name_esc_smd);
+ }
+ else {
return BLI_strdup("");
+ }
}
static void rna_SequenceModifier_name_set(PointerRNA *ptr, const char *value)
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index 76f005cdd2b..83a974137e8 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -99,24 +99,30 @@ static char *rna_SmokeDomainSettings_path(PointerRNA *ptr)
{
SmokeDomainSettings *settings = (SmokeDomainSettings *)ptr->data;
ModifierData *md = (ModifierData *)settings->smd;
+ char name_esc[sizeof(md->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].domain_settings", md->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].domain_settings", name_esc);
}
static char *rna_SmokeFlowSettings_path(PointerRNA *ptr)
{
SmokeFlowSettings *settings = (SmokeFlowSettings *)ptr->data;
ModifierData *md = (ModifierData *)settings->smd;
+ char name_esc[sizeof(md->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].flow_settings", md->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].flow_settings", name_esc);
}
static char *rna_SmokeCollSettings_path(PointerRNA *ptr)
{
SmokeCollSettings *settings = (SmokeCollSettings *)ptr->data;
ModifierData *md = (ModifierData *)settings->smd;
+ char name_esc[sizeof(md->name) * 2];
- return BLI_sprintfN("modifiers[\"%s\"].coll_settings", md->name);
+ BLI_strescape(name_esc, md->name, sizeof(name_esc));
+ return BLI_sprintfN("modifiers[\"%s\"].coll_settings", name_esc);
}
static int rna_SmokeModifier_density_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index e57d9586a32..d01eab053bd 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -307,10 +307,15 @@ char *rna_TextureSlot_path(PointerRNA *ptr)
}
/* this is a compromise for the remaining cases... */
- if (mtex->tex)
- return BLI_sprintfN("texture_slots[\"%s\"]", mtex->tex->id.name + 2);
- else
+ if (mtex->tex) {
+ char name_esc[(sizeof(mtex->tex->id.name) - 2) * 2];
+
+ BLI_strescape(name_esc, mtex->tex->id.name + 2, sizeof(name_esc));
+ return BLI_sprintfN("texture_slots[\"%s\"]", name_esc);
+ }
+ else {
return BLI_strdup("texture_slots[0]");
+ }
}
static int rna_TextureSlot_name_length(PointerRNA *ptr)
diff --git a/source/blender/makesrna/intern/rna_tracking.c b/source/blender/makesrna/intern/rna_tracking.c
index 6f0478b5eec..d315912eb84 100644
--- a/source/blender/makesrna/intern/rna_tracking.c
+++ b/source/blender/makesrna/intern/rna_tracking.c
@@ -82,9 +82,10 @@ static void rna_tracking_defaultSettings_searchUpdate(Main *UNUSED(bmain), Scene
static char *rna_trackingTrack_path(PointerRNA *ptr)
{
- MovieTrackingTrack *track = (MovieTrackingTrack *) ptr->data;
-
- return BLI_sprintfN("tracking.tracks[\"%s\"]", track->name);
+ MovieTrackingTrack *track = (MovieTrackingTrack *)ptr->data;
+ char name_esc[sizeof(track->name) * 2];
+ BLI_strescape(name_esc, track->name, sizeof(name_esc));
+ return BLI_sprintfN("tracking.tracks[\"%s\"]", name_esc);
}
static void rna_trackingTracks_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)