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:
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