Fix T55115: crash when iterating SmokeDomainSettings color_grid property

through python
This commit is contained in:
Philipp Oeser 2018-05-18 12:58:46 +02:00
parent 1cc4ab481e
commit 5e7a21a5f5
Notes: blender-bot 2023-02-14 05:51:23 +01:00
Referenced by issue #55115, Blender crash with Smoke system while iterating color_grid property through python
1 changed files with 16 additions and 9 deletions

View File

@ -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);