commit fd8791d4293cb259b045f101581e41e2d6969231
parent 643b0ea5c0a25c55c5a69b55aeb096d29cab7530
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Tue, 26 Mar 2019 17:59:12 +0100
Fix possible use of a wrong medium id
Diffstat:
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/src/stardis-compute.c b/src/stardis-compute.c
@@ -891,6 +891,7 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
/* create new interface and register */
struct sdis_interface_shader interface_shader = SDIS_INTERFACE_SHADER_NULL;
struct intface* interface_props = NULL;
+ unsigned id;
int front_defined = (fd != UINT_MAX);
int back_defined = (bd != UINT_MAX);
int connect_defined = (cd != UINT_MAX);
@@ -904,12 +905,14 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
if (front_defined) {
switch (stardis->descriptions[fd].type) {
case DESC_MAT_SOLID:
+ id = stardis->descriptions[fd].d.solid.solid_id;
solid_count++;
- front_med = media[fd];
+ front_med = media[id];
break;
case DESC_MAT_FLUID:
fluid_count++;
- front_med = media[fd];
+ id = stardis->descriptions[fd].d.fluid.fluid_id;
+ front_med = media[id];
fluid_side_shader = &interface_shader.front;
break;
default: FATAL("Invalid type.\n");
@@ -918,12 +921,14 @@ stardis_compute(struct stardis* stardis, enum stardis_mode mode)
if (back_defined) {
switch (stardis->descriptions[bd].type) {
case DESC_MAT_SOLID:
+ id = stardis->descriptions[bd].d.solid.solid_id;
solid_count++;
- back_med = media[bd];
+ back_med = media[id];
break;
case DESC_MAT_FLUID:
fluid_count++;
- back_med = media[bd];
+ id = stardis->descriptions[bd].d.fluid.fluid_id;
+ back_med = media[id];
fluid_side_shader = &interface_shader.back;
break;
default: FATAL("Invalid type.\n");