diff --git a/src/runtime/c/pgf/linearizer.cxx b/src/runtime/c/pgf/linearizer.cxx index 42414352b..7b62981b2 100644 --- a/src/runtime/c/pgf/linearizer.cxx +++ b/src/runtime/c/pgf/linearizer.cxx @@ -67,9 +67,6 @@ bool PgfLinearizer::resolve() ref pres = *vector_elem(node->lin->res, node->lin_index); - node->var_count = 0; - node->var_values = NULL; - int i = 0; TreeNode *arg = node->args; while (arg != NULL) { @@ -134,6 +131,11 @@ bool PgfLinearizer::resolve() node->value = node->eval_param(&pres->param); break; } + + // Unbind all variables + for (size_t j = 0; j < node->var_count; j++) { + node->var_values[j] = (size_t) -1; + } } node = node->next; diff --git a/src/runtime/c/pgf/linearizer.h b/src/runtime/c/pgf/linearizer.h index ef8247ed5..aef2d5df8 100644 --- a/src/runtime/c/pgf/linearizer.h +++ b/src/runtime/c/pgf/linearizer.h @@ -39,6 +39,7 @@ class PGF_INTERNAL_DECL PgfLinearizer : public PgfUnmarshaller { size_t *var_values; TreeNode(PgfLinearizer *linearizer, ref lin); + ~TreeNode() { free(var_values); }; size_t eval_param(PgfLParam *param); };