summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorOmar Rizwan <omar@omar.website>2023-06-06 05:49:08 +0000
committerOmar Rizwan <omar@omar.website>2023-06-06 05:49:08 +0000
commit830c5a3658bb4401fe00f21e38dff7501b9c3eaf (patch)
tree5cc165e238c97ad62111c40c4133a8a581b99286 /lib
parentMore fixing evaluator bugs (with reuse) (diff)
downloadfolk-830c5a3658bb4401fe00f21e38dff7501b9c3eaf.tar.gz
folk-830c5a3658bb4401fe00f21e38dff7501b9c3eaf.zip
Do gen increment on removal -- this seems better
Diffstat (limited to 'lib')
-rw-r--r--lib/evaluator.tcl6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/evaluator.tcl b/lib/evaluator.tcl
index 9816caaf..8eacc659 100644
--- a/lib/evaluator.tcl
+++ b/lib/evaluator.tcl
@@ -219,7 +219,7 @@ namespace eval Statements { ;# singleton Statement store
matches[nextMatchIdx].alive = true;
return (match_handle_t) {
.idx = nextMatchIdx,
- .gen = ++matches[nextMatchIdx].gen
+ .gen = matches[nextMatchIdx].gen
};
}
$cc proc matchGet {match_handle_t matchId} match_t* {
@@ -255,6 +255,7 @@ namespace eval Statements { ;# singleton Statement store
LogWriteRecollect(match->recollectCollectId);
}
match->alive = false;
+ match->gen++;
match->n_edges = 0;
ckfree((char*)match->edges);
}
@@ -282,7 +283,7 @@ namespace eval Statements { ;# singleton Statement store
}
return (statement_handle_t) {
.idx = nextStatementIdx,
- .gen = ++statements[nextStatementIdx].gen
+ .gen = statements[nextStatementIdx].gen
};
}
$cc proc get {statement_handle_t id} statement_t* {
@@ -306,6 +307,7 @@ namespace eval Statements { ;# singleton Statement store
Tcl_DecrRefCount(clause);
stmt->gen = gen;
+ stmt->gen++;
}
$cc proc size {} size_t {
size_t size = 0;