Completed
Details
Assignee
UnassignedUnassignedReporter
Christophe GrandChristophe GrandLabels
Approval
OkPatch
Code and TestPriority
CriticalAffects versions
Fix versions
Details
Details
Assignee
Unassigned
UnassignedReporter
Christophe Grand
Christophe GrandLabels
Approval
Ok
Patch
Code and Test
Priority
Affects versions
Fix versions
Created October 28, 2013 at 11:17 AM
Updated November 11, 2013 at 5:17 PM
Resolved November 11, 2013 at 5:17 PM
Bug reported by Zach Tellman https://groups.google.com/d/msg/clojure-dev/HvppNjEH5Qc/1wZ-6qE7nWgJ
Since transients were introduced the invariant array.length == count*2 doesn't hold for HashCollisionNode.
However persistent
.without
still relies on it.Hence persistent dissoc on a collision node created by transients fails.
returns false.
Patch: persistent-assoc-after-collision.diff
Generative test patch: transient-generative-test.diff
The generative test reliably reproduces the error. It is simpler than the original test that found the bug but tests a series conj/disj/transient/persistent actions on a set. I've included it separately in case we decide not to apply.
Screened by: Alex Miller