diff --git a/src/runtime/c/pgf/linearizer.cxx b/src/runtime/c/pgf/linearizer.cxx index 987257e21..4657272a7 100644 --- a/src/runtime/c/pgf/linearizer.cxx +++ b/src/runtime/c/pgf/linearizer.cxx @@ -76,11 +76,11 @@ void PgfLinearizer::TreeNode::linearize_arg(PgfLinearizationOutputIface *out, Pg TreeNode *arg = args; while (d > 0) { arg = arg->next_arg; - if (arg == 0) + if (arg == NULL) break; d--; } - if (arg == 0) + if (arg == NULL) throw pgf_error("Missing argument"); arg->linearize(out, linearizer, r); } @@ -235,6 +235,7 @@ bool PgfLinearizer::TreeLinNode::resolve(PgfLinearizer *linearizer) while (rule_index < lin->rules.size()) { Item *item = new (lin->rules[rule_index]) Item(); + item->rule = lin->rules[rule_index]; int i = 0; TreeNode *arg = args; @@ -508,6 +509,7 @@ bool PgfLinearizer::TreeLinrefNode::resolve(PgfLinearizer *linearizer) while (rule_index < lincat->rules.size()) { Item *item = new (lincat->rules[lincat->n_lindefs+rule_index]) Item(); + item->rule = lincat->rules[lincat->n_lindefs+rule_index]; if (!item->instantiate(item->rule->args[0], root->value)) { rule_index++; diff --git a/src/runtime/c/pgf/linearizer.h b/src/runtime/c/pgf/linearizer.h index af54030ef..8552b61d6 100644 --- a/src/runtime/c/pgf/linearizer.h +++ b/src/runtime/c/pgf/linearizer.h @@ -45,7 +45,6 @@ class PGF_INTERNAL_DECL PgfLinearizer : public PgfUnmarshaller { size_t sz2 = rule->vars.size()*sizeof(size_t); Item *new_item = (Item *) malloc(sz+sz2); memset(new_item, 0, sz+sz2); - new_item->rule = rule; return new_item; }