city_generator2

Generated conformal 3D meshes representing a city
git clone git://git.meso-star.fr/city_generator2.git
Log | Files | Refs | README | LICENSE

commit 48fe3f273657bcd71e9e8aeecf2e8dd39e1738d3
parent 9adb85a69edb8446b132b25f9a2e7ed49f669ee5
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Mon, 19 Dec 2022 15:14:04 +0100

BugFix: alloc return not checked

Diffstat:
Msrc/cg_constructive_mode_0.c | 16++++++++++++----
Msrc/cg_constructive_mode_1.c | 4++++
2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/cg_constructive_mode_0.c b/src/cg_constructive_mode_0.c @@ -96,7 +96,6 @@ build_roof double e; double d[3] = {0, 0, 0}; struct data_set_cmode_0* data; - /*struct data_cad_model0* data_cad;*/ char* roofname = NULL; struct str name; int is_init = 0; @@ -111,7 +110,6 @@ build_roof height = b->height; data = (struct data_set_cmode_0*)b->data; - /*data_cad = (struct data_cad_model0*)b->data_cad;*/ e = data->floor; ERR(scad_geometry_copy(floor, roofname, roof)); @@ -132,7 +130,6 @@ build_wall_footprint struct scad_geometry** footprint) { res_T res = RES_OK; - /*struct data_cad_model0* data_cad;*/ struct scad_geometry* polygon = NULL; struct scad_geometry* polygon_int = NULL; size_t nverts, nverts_int; @@ -246,6 +243,10 @@ build_connection int is_init = 0; cad->connection = malloc(3 * sizeof(struct scad_geometry*)); + if(!cad->connection) { + res = RES_MEM_ERR; + goto error; + } cad->n_connection = 3; /* cavity/floor connection */ @@ -310,6 +311,10 @@ build_boundary int is_init = 0; list = malloc(4 * sizeof(struct scad_geometry*)); + if(!list) { + res = RES_MEM_ERR; + goto error; + } list[0] = cad->floor; list[1] = cad->wall; list[2] = cad->roof; @@ -454,6 +459,10 @@ build_cad_model0(struct building* building) } data_cad = calloc(1, sizeof(struct data_cad_cmode_0)); + if(!data_cad) { + res = RES_MEM_ERR; + goto error; + } building->data_cad = (struct data_cad_cmode_0*)data_cad; e_wall = data->wall; @@ -484,7 +493,6 @@ build_cad_model0(struct building* building) /* build cavity/floor connectiona*/ ERR(build_connection(name, building->data_cad)); - exit: if(pg_int) scpr_polygon_ref_put(pg_int); return res; diff --git a/src/cg_constructive_mode_1.c b/src/cg_constructive_mode_1.c @@ -1258,6 +1258,10 @@ build_cad_model1(struct building* building) } data_cad = calloc(1, sizeof(struct data_cad_cmode_1)); + if(!data_cad) { + res = RES_MEM_ERR; + goto error; + } building->data_cad = (struct data_cad_cmode_1*)data_cad; /* build mandatories elements :