diff options
| author | kr.angelov <kr.angelov@gmail.com> | 2013-12-17 13:57:16 +0000 |
|---|---|---|
| committer | kr.angelov <kr.angelov@gmail.com> | 2013-12-17 13:57:16 +0000 |
| commit | a01e248ae61ec287908a976f6ff9afd41a80ad86 (patch) | |
| tree | 204c55fdab9ccbac3104d86df9019ebd238aa722 /src/runtime | |
| parent | e0481e3b8a8b6de306cff4c0645c6d19ae443e9a (diff) | |
make sure that pgf_concrete_load has no effect on grammars that are completely loaded
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/c/pgf/reader.c | 11 |
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); } |
