![]() A `this%` expression used in a finalization callback implicitly referred to `this`, since it's a dynamic reference to the object's class. As a result, the finalizer for `this` refers to `this`, so `this` never becomes collectable. The problem is fixed by lifting the `this%` out of the `lambda`. Less significantly, the finalizer thread in "prepared.rkt" captured various parameters on creation, including the current namespace. If a prepared statement is bound to a module-level variable, then the finalizer thread refers through the namespace to the prepared statement, so the prepared statement can never be finalized. Setting the current namespace to a fresh empty one while creating the thread avoids that specific problem. (Other parameters could cause similar problems, but solving the namespace one works well enough for now.) |
||
---|---|---|
.. | ||
collects | ||
src | ||
.gitignore |