From 635a69112875d39142b2a41e1e76b21dcc80284c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tina=20M=C3=BCller?= Date: Sun, 28 Apr 2024 17:39:38 +0200 Subject: [PATCH] Return early in yaml_emitter_close If yaml_emitter_dump failed, the emitter might be in a broken state and have leftover states/events. yaml_emitter_close calls yaml_emitter_emit which will try to emit those events, so we should return early. The recommended thing to do for library users is to abort when yaml_emitter_dump fails, but it's easy to add a check here as well. --- src/dumper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dumper.c b/src/dumper.c index 1fe940b6..a5aa52fe 100644 --- a/src/dumper.c +++ b/src/dumper.c @@ -92,6 +92,7 @@ yaml_emitter_close(yaml_emitter_t *emitter) assert(emitter->opened); /* Emitter should be opened. */ if (emitter->closed) return 1; + if (emitter->error) return 0; /* Emitter might have leftover events */ STREAM_END_EVENT_INIT(event, mark, mark);