summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2013-06-24 07:56:42 +0000
committerkr.angelov <kr.angelov@gmail.com>2013-06-24 07:56:42 +0000
commit09a42bbab0bc0d19cd7bd85f8b3705316c8b4038 (patch)
tree2f80c3957b2d01019b993098b03db2ed7c967e6f
parent526bfff57d90fdde4164b562f3b5b9a9d17bb389 (diff)
bugfix for the linearizer in the C runtime
-rw-r--r--src/runtime/c/pgf/linearizer.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/runtime/c/pgf/linearizer.c b/src/runtime/c/pgf/linearizer.c
index 8a48bb4fe..c5aac7f4f 100644
--- a/src/runtime/c/pgf/linearizer.c
+++ b/src/runtime/c/pgf/linearizer.c
@@ -378,7 +378,20 @@ pgf_lzn_resolve(PgfLzn* lzn, PgfExpr expr, PgfCCat* ccat, GuPool* pool)
gu_putc(']', wtr, err);
GuString s = gu_string_buf_freeze(sbuf, pool);
- ret = pgf_lzn_resolve_def(lzn, ccat->lindefs, s, pool);
+ if (ccat != NULL) {
+ ret = pgf_lzn_resolve_def(lzn, ccat->lindefs, s, pool);
+ } else {
+ PgfCncTreeLit* clit =
+ gu_new_variant(PGF_CNC_TREE_LIT,
+ PgfCncTreeLit,
+ &ret, pool);
+ clit->fid = lzn->fid++;
+ PgfLiteralStr* lit =
+ gu_new_variant(PGF_LITERAL_STR,
+ PgfLiteralStr,
+ &clit->lit, pool);
+ lit->val = s;
+ }
gu_pool_free(tmp_pool);
goto done;