stardis-solver

Solve coupled heat transfers
git clone git://git.meso-star.fr/stardis-solver.git
Log | Files | Refs | README | LICENSE

commit 6682df1792876a5645da5444a1c703fd024bdfab
parent 26d93a01b6b1d5ecb8de946166d316588ef440ce
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 26 Oct 2021 16:24:16 +0200

Fix the management of the heat_path data structure

The list of heat path breaks were not initialised/released/copied.

Diffstat:
Msrc/sdis_heat_path.h | 23++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/sdis_heat_path.h b/src/sdis_heat_path.h @@ -55,6 +55,7 @@ heat_path_init(struct mem_allocator* allocator, struct sdis_heat_path* path) ASSERT(path); path->status = SDIS_HEAT_PATH_NONE; darray_heat_vertex_init(allocator, &path->vertices); + darray_size_t_init(allocator, &path->breaks); } static INLINE void @@ -62,30 +63,46 @@ heat_path_release(struct sdis_heat_path* path) { ASSERT(path); darray_heat_vertex_release(&path->vertices); + darray_size_t_release(&path->breaks); } static INLINE res_T heat_path_copy(struct sdis_heat_path* dst, const struct sdis_heat_path* src) { + res_T res = RES_OK; ASSERT(dst && src); dst->status = src->status; - return darray_heat_vertex_copy(&dst->vertices, &src->vertices); + res = darray_heat_vertex_copy(&dst->vertices, &src->vertices); + if(res != RES_OK) return res; + res = darray_size_t_copy(&dst->breaks, &src->breaks); + if(res != RES_OK) return res; + return RES_OK; } static INLINE res_T heat_path_copy_and_release(struct sdis_heat_path* dst, struct sdis_heat_path* src) { + res_T res = RES_OK; ASSERT(dst && src); dst->status = src->status; - return darray_heat_vertex_copy_and_release(&dst->vertices, &src->vertices); + res = darray_heat_vertex_copy_and_release(&dst->vertices, &src->vertices); + if(res != RES_OK) return res; + res = darray_size_t_copy_and_release(&dst->breaks, &src->breaks); + if(res != RES_OK) return res; + return RES_OK; } static INLINE res_T heat_path_copy_and_clear(struct sdis_heat_path* dst, struct sdis_heat_path* src) { + res_T res = RES_OK; ASSERT(dst && src); dst->status = src->status; - return darray_heat_vertex_copy_and_clear(&dst->vertices, &src->vertices); + res = darray_heat_vertex_copy_and_clear(&dst->vertices, &src->vertices); + if(res != RES_OK) return res; + res = darray_size_t_copy_and_clear(&dst->breaks, &src->breaks); + if(res != RES_OK) return res; + return RES_OK; } static INLINE res_T