summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/c/pgf/reader.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/runtime/c/pgf/reader.c b/src/runtime/c/pgf/reader.c
index ba9f3e30f..68c620fb3 100644
--- a/src/runtime/c/pgf/reader.c
+++ b/src/runtime/c/pgf/reader.c
@@ -1234,9 +1234,11 @@ pgf_read_concrete(PgfReader* rdr, PgfAbstr* abstr, bool with_content)
concr->pool = NULL;
- if (with_content)
+ if (with_content) {
pgf_read_concrete_content(rdr, concr);
- else {
+
+ concr->fin.fn = NULL;
+ } else {
pgf_read_concrete_init_header(concr);
concr->fin.fn = gu_concr_fini;
@@ -1250,7 +1252,7 @@ pgf_read_concrete(PgfReader* rdr, PgfAbstr* abstr, bool with_content)
void
pgf_concrete_load(PgfConcr* concr, GuIn* in, GuExn* err)
{
- if (concr->pool != NULL)
+ if (concr->fin.fn == NULL || concr->pool != NULL)
return; // already loaded
GuPool* pool = gu_new_pool();
@@ -1286,6 +1288,9 @@ pgf_concrete_load(PgfConcr* concr, GuIn* in, GuExn* err)
void
pgf_concrete_unload(PgfConcr* concr)
{
+ if (concr->fin.fn == NULL)
+ return;
+
gu_concr_fini(&concr->fin);
}