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:
authorAaron Carlisle <carlisle.b3d@gmail.com>2020-02-04 06:39:28 +0300
committerAaron Carlisle <carlisle.b3d@gmail.com>2020-02-04 06:39:28 +0300
commitc482e22f3fff291183683fee29c352ef57edd166 (patch)
tree61a463955fafa9247e5e52d5de0716093ede49e1 /source/blender/blenkernel
parent03a29090b57d087b7996dd25e1505537221233f9 (diff)
parentfdb68e184714f480c87c13c3c34480e9adfe4620 (diff)
Merge branch 'blender-v2.82-release'
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/fluid.c24
-rw-r--r--source/blender/blenkernel/intern/object_dupli.c9
2 files changed, 31 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index f19137bf796..91adbf2301d 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -872,6 +872,11 @@ static void update_obstacleflags(FluidDomainSettings *mds,
FluidModifierData *mmd2 = (FluidModifierData *)modifiers_findByType(coll_ob,
eModifierType_Fluid);
+ /* Sanity check. */
+ if (!mmd2) {
+ continue;
+ }
+
if ((mmd2->type & MOD_FLUID_TYPE_EFFEC) && mmd2->effector) {
FluidEffectorSettings *mes = mmd2->effector;
if (!mes) {
@@ -959,6 +964,11 @@ static void update_obstacles(Depsgraph *depsgraph,
FluidModifierData *mmd2 = (FluidModifierData *)modifiers_findByType(coll_ob,
eModifierType_Fluid);
+ /* Sanity check. */
+ if (!mmd2) {
+ continue;
+ }
+
/* TODO (sebbas): check if modifier is active? */
if ((mmd2->type & MOD_FLUID_TYPE_EFFEC) && mmd2->effector) {
FluidEffectorSettings *mes = mmd2->effector;
@@ -2298,7 +2308,7 @@ static void update_flowsflags(FluidDomainSettings *mds, Object **flowobjs, int n
FluidModifierData *mmd2 = (FluidModifierData *)modifiers_findByType(coll_ob,
eModifierType_Fluid);
- // Sanity check
+ /* Sanity check. */
if (!mmd2) {
continue;
}
@@ -2411,6 +2421,11 @@ static void update_flowsfluids(struct Depsgraph *depsgraph,
FluidModifierData *mmd2 = (FluidModifierData *)modifiers_findByType(flowobj,
eModifierType_Fluid);
+ /* Sanity check. */
+ if (!mmd2) {
+ continue;
+ }
+
/* Check for initialized smoke object. */
if ((mmd2->type & MOD_FLUID_TYPE_FLOW) && mmd2->flow) {
FluidFlowSettings *mfs = mmd2->flow;
@@ -2607,6 +2622,11 @@ static void update_flowsfluids(struct Depsgraph *depsgraph,
FluidModifierData *mmd2 = (FluidModifierData *)modifiers_findByType(flowobj,
eModifierType_Fluid);
+ /* Sanity check. */
+ if (!mmd2) {
+ continue;
+ }
+
/* Check for initialized flow object. */
if ((mmd2->type & MOD_FLUID_TYPE_FLOW) && mmd2->flow) {
FluidFlowSettings *mfs = mmd2->flow;
@@ -3313,7 +3333,7 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
guide_parent = mds->guide_parent;
if (guide_parent) {
mmd_parent = (FluidModifierData *)modifiers_findByType(guide_parent, eModifierType_Fluid);
- if (mmd_parent->domain) {
+ if (mmd_parent && mmd_parent->domain) {
copy_v3_v3_int(mds->guide_res, mmd_parent->domain->res);
}
}
diff --git a/source/blender/blenkernel/intern/object_dupli.c b/source/blender/blenkernel/intern/object_dupli.c
index eceeb231285..c10ab3cddab 100644
--- a/source/blender/blenkernel/intern/object_dupli.c
+++ b/source/blender/blenkernel/intern/object_dupli.c
@@ -521,6 +521,9 @@ static void make_duplis_font(const DupliContext *ctx)
family_len = strlen(cu->family);
family_gh = BLI_ghash_int_new_ex(__func__, 256);
+ /* Safety check even if it might fail badly when called for original object. */
+ const bool is_eval_curve = DEG_is_evaluated_id(&cu->id);
+
/* advance matching BLI_strncpy_wchar_from_utf8 */
for (a = 0; a < text_len; a++, ct++) {
@@ -528,6 +531,12 @@ static void make_duplis_font(const DupliContext *ctx)
* Definitively don't think it would be safe to put back Main *bmain pointer
* in DupliContext as done in 2.7x? */
ob = find_family_object(G.main, cu->family, family_len, (unsigned int)text[a], family_gh);
+
+ if (is_eval_curve) {
+ /* Workaround for the above hack. */
+ ob = DEG_get_evaluated_object(ctx->depsgraph, ob);
+ }
+
if (ob) {
vec[0] = fsize * (ct->xof - xof);
vec[1] = fsize * (ct->yof - yof);