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
diff options
context:
space:
mode:
authorJoshua Leung <aligorith@gmail.com>2010-07-14 15:03:07 +0400
committerJoshua Leung <aligorith@gmail.com>2010-07-14 15:03:07 +0400
commit9a93713f645e43f795ffeffb3ef0435a86d3a74c (patch)
treeb92c96431d0e226c37863faeadb0051342a1493d /source/blender/editors
parentf406cf4ac82510c6b064d9411ec0cbd38a0ef7e0 (diff)
Bugfix #22792: Blender crashes after inserting keyframe pressing "I" key
Insert Keyframe function was not checking that an ID-block was given before trying to resolve the RNA-path using it.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/animation/keyframing.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index 882fb3e91dc..f60181d7f6c 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -817,15 +817,21 @@ short insert_keyframe_direct (PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, fl
short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag)
{
PointerRNA id_ptr, ptr;
- PropertyRNA *prop;
+ PropertyRNA *prop = NULL;
FCurve *fcu;
int array_index_max= array_index+1;
int ret= 0;
/* validate pointer first - exit if failure */
+ if (id == NULL) {
+ printf("Insert Key: no ID-block to insert keyframe in (Path = %s) \n", rna_path);
+ return 0;
+ }
+
RNA_id_pointer_create(id, &id_ptr);
if ((RNA_path_resolve(&id_ptr, rna_path, &ptr, &prop) == 0) || (prop == NULL)) {
- printf("Insert Key: Could not insert keyframe, as RNA Path is invalid for the given ID (ID = %s, Path = %s)\n", id->name, rna_path);
+ printf("Insert Key: Could not insert keyframe, as RNA Path is invalid for the given ID (ID = %s, Path = %s)\n",
+ (id)? id->name : "<Missing ID-Block>", rna_path);
return 0;
}
@@ -922,7 +928,7 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_
if ELEM(NULL, id, adt) {
printf("ERROR: no ID-block and/or AnimData to delete keyframe from \n");
return 0;
- }
+ }
/* validate pointer first - exit if failure */
RNA_id_pointer_create(id, &id_ptr);