GCC10 -fanalyzer found a double fclose in asm_end. asm_end can call
text_end, which calls fclose and checks for errors, then asm_end
calls __libasm_finictx which can call fclose again (but doesn't
check for errors). Call fflush in text_end instead. fflush will
generate the same error fclose would if something went wrong writing
out the file.
Signed-off-by: Mark Wielaard <mark@klomp.org>
+2020-04-25 Mark Wielaard <mark@klomp.org>
+
+ * asm_end.c (text_end): Call fflush instead of fclose.
+
2020-01-08 Mark Wielaard <mark@klomp.org>
* libasm.h: Don't include libebl.h. Define an opaque Ebl handle.
static int
text_end (AsmCtx_t *ctx __attribute__ ((unused)))
{
- if (fclose (ctx->out.file) != 0)
+ if (fflush (ctx->out.file) != 0)
{
__libasm_seterrno (ASM_E_IOERROR);
return -1;