diff options
author | Sebastian Parborg <darkdefende@gmail.com> | 2019-08-23 16:50:53 +0300 |
---|---|---|
committer | Sebastian Parborg <darkdefende@gmail.com> | 2019-08-23 16:54:11 +0300 |
commit | 6d64da1e67e319e826450cefc1f6541b0fbb57e9 (patch) | |
tree | 02381420ae1b177530a7dac75be1f867fc1d4b55 /source/blender/modifiers/intern/MOD_datatransfer.c | |
parent | 8eb22968724b3ac9f6ccb426b08cb865cbbcef94 (diff) |
Fix potential issues when loading files with missing libraries
This is a continuation of rB39f005eae8eed8b939579aff8c9a05a4f50e5e38
Now all the fields where we check for object type in RNA (like
rna_Curve_object_poll) will have a safe guard for when this isn't the
case. For example when loading files that has missing object libraries
and all missing objects are replaced with empties (placeholders).
Reviewed By: Brecht
Differential Revision: http://developer.blender.org/D5425
Diffstat (limited to 'source/blender/modifiers/intern/MOD_datatransfer.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_datatransfer.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/modifiers/intern/MOD_datatransfer.c b/source/blender/modifiers/intern/MOD_datatransfer.c index c994a680fb0..fa60bd2a502 100644 --- a/source/blender/modifiers/intern/MOD_datatransfer.c +++ b/source/blender/modifiers/intern/MOD_datatransfer.c @@ -141,9 +141,14 @@ static bool isDisabled(const struct Scene *UNUSED(scene), ModifierData *md, bool UNUSED(useRenderParams)) { - DataTransferModifierData *dtmd = (DataTransferModifierData *)md; /* If no source object, bypass. */ - return (dtmd->ob_source == NULL); + DataTransferModifierData *dtmd = (DataTransferModifierData *)md; + /* The object type check is only needed here in case we have a placeholder + * object assigned (because the library containing the mesh is missing). + * + * In other cases it should be impossible to have a type missmatch. + */ + return !dtmd->ob_source || dtmd->ob_source->type != OB_MESH; } #define HIGH_POLY_WARNING 10000 |