Commit: 5e7a21a5f549f5db73385820cafcd8f2bb9c91da
Author: Philipp Oeser
Date:   Fri May 18 12:58:46 2018 +0200
Branches: master
https://developer.blender.org/rB5e7a21a5f549f5db73385820cafcd8f2bb9c91da

Fix T55115: crash when iterating SmokeDomainSettings color_grid property
through python

===================================================================

M       source/blender/makesrna/intern/rna_smoke.c

===================================================================

diff --git a/source/blender/makesrna/intern/rna_smoke.c 
b/source/blender/makesrna/intern/rna_smoke.c
index 38c297def32..b860ad303f0 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -286,20 +286,27 @@ static void rna_SmokeModifier_color_grid_get(PointerRNA 
*ptr, float *values)
 {
 #ifdef WITH_SMOKE
        SmokeDomainSettings *sds = (SmokeDomainSettings *)ptr->data;
+       int length[RNA_MAX_ARRAY_DIMENSION];
+       int size = rna_SmokeModifier_grid_get_length(ptr, length);
 
        BLI_rw_mutex_lock(sds->fluid_mutex, THREAD_LOCK_READ);
 
-       if (sds->flags & MOD_SMOKE_HIGHRES) {
-               if (smoke_turbulence_has_colors(sds->wt))
-                       smoke_turbulence_get_rgba(sds->wt, values, 0);
-               else
-                       smoke_turbulence_get_rgba_from_density(sds->wt, 
sds->active_color, values, 0);
+       if (!sds->fluid) {
+               memset(values, 0, size * sizeof(float));
        }
        else {
-               if (smoke_has_colors(sds->fluid))
-                       smoke_get_rgba(sds->fluid, values, 0);
-               else
-                       smoke_get_rgba_from_density(sds->fluid, 
sds->active_color, values, 0);
+               if (sds->flags & MOD_SMOKE_HIGHRES) {
+                       if (smoke_turbulence_has_colors(sds->wt))
+                               smoke_turbulence_get_rgba(sds->wt, values, 0);
+                       else
+                               smoke_turbulence_get_rgba_from_density(sds->wt, 
sds->active_color, values, 0);
+               }
+               else {
+                       if (smoke_has_colors(sds->fluid))
+                               smoke_get_rgba(sds->fluid, values, 0);
+                       else
+                               smoke_get_rgba_from_density(sds->fluid, 
sds->active_color, values, 0);
+               }
        }
 
        BLI_rw_mutex_unlock(sds->fluid_mutex);

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to