star-stl

Load STereo Lithography (StL) file format
git clone git://git.meso-star.fr/star-stl.git
Log | Files | Refs | README | LICENSE

commit e6b6fd9d106da9b8083f56782f68228ff56955fc
parent 1f5ae4bc004bc22b6c021536e6f28e44f97bbb63
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 23 Apr 2025 16:12:49 +0200

Update writer finalization

Finalization is assumed to always succeed. Partial finalization
corrupts the output, and it would be too hasardous to try returning to
the previous state. Finally, detecting a finalization error prevents
the writer from being released, adding a memory leak to the
finalization error, which could be impossible to resolve.

Diffstat:
Msrc/sstl_writer.c | 6++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/sstl_writer.c b/src/sstl_writer.c @@ -367,9 +367,7 @@ finalize_binary(struct sstl_writer* writer) * should not exist */ ASSERT(writer->ntris < 0 || writer->ntris_written <= writer->ntris); if(writer->ntris >= 0 && writer->ntris_written < writer->ntris) { - ERROR(writer, "%s: triangles are missing\n", str_cget(&writer->filename)); - res = RES_BAD_ARG; - goto error; + WARN(writer, "%s: triangles are missing\n", str_cget(&writer->filename)); } if(writer->ntris_offset >= 0) { @@ -415,7 +413,7 @@ release_writer(ref_T* ref) struct sstl_writer* writer = CONTAINER_OF(ref, struct sstl_writer, ref); ASSERT(ref); - if(writer->is_init) finalize(writer); + if(writer->is_init) CHK(finalize(writer) == RES_OK); if(writer->is_fp_intern) CHK(fclose(writer->fp) == 0); str_release(&writer->filename); MEM_RM(writer->allocator, writer);