Fix (some?) recursive objects by disabling memo ref counting #24
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
While comparing this implementation to the CPython impl I noticed that CPython does not perform ref counting of objects in its internal
memo
list, but this crate does. I believe that somewhere there's a bug in the ref counting logic (or maybe it's not even valid to ref count these?) that causes an object to be dropped to early from the memo list and cause errors upon subsequent lookups.This PR adds an internal flag to just disable ref counting until this can be investigated further. I've tested this PR on data which previously returned a recursion error and it now works with correct results.
Related: #22.