commit 6192e2e85b627339ee1f28076b38a3915e907c82
parent 3c5227fc91a28504bc507e841ef4a534fa36e125
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Mon, 7 Feb 2022 17:53:31 +0100
Fix a crash when releasing data on an exit-on-error path
Diffstat:
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/stardis-app.c b/src/stardis-app.c
@@ -247,6 +247,7 @@ stardis_init
stardis->trad = STARDIS_DEFAULT_TRAD;
stardis->trad_ref = STARDIS_DEFAULT_TRAD_REFERENCE;
stardis->trad_def = 0;
+ stardis->geometry_initialized = 0;
d2(stardis->t_range, INF, -INF);
stardis->dump_paths = SDIS_HEAT_PATH_NONE;
if(args->dump_paths & DUMP_ERROR)
@@ -271,6 +272,7 @@ stardis_init
ERR(init_geometry(stardis->logger, stardis->allocator, stardis->verbose,
&stardis->geometry));
+ stardis->geometry_initialized = 1;
if(args->mode & MODE_IR_COMPUTE) {
ERR(parse_camera(stardis->logger, args->camera, stardis));
@@ -451,7 +453,8 @@ stardis_release
release_description(d, stardis->allocator);
}
darray_descriptions_release(&stardis->descriptions);
- release_geometry(&stardis->geometry);
+ if(stardis->geometry_initialized)
+ release_geometry(&stardis->geometry);
darray_size_t_release(&stardis->compute_surface.primitives);
darray_sides_release(&stardis->compute_surface.sides);
darray_uint_release(&stardis->compute_surface.err_triangles);
diff --git a/src/stardis-app.h b/src/stardis-app.h
@@ -808,6 +808,7 @@ struct stardis {
unsigned undefined_medium_behind_boundary_id;
int dump_paths;
int verbose;
+ int geometry_initialized;
};
static INLINE unsigned