CALL-NEXT-METHOD with no arguments does not conform to CLHS
Bug #1734771 reported by
Alastair Bridgewater
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
High
|
Unassigned |
Bug Description
Found in 1.3.8.26-
Mutating :AROUND method arguments and then calling CALL-NEXT-METHOD without arguments uses the mutated arguments, not the original arguments, which is forbidden by CLHS Local Function CALL-NEXT-METHOD, description paragraph four.
LOADable example attached.
tags: | added: ansi pcl |
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
To post a comment you must log in.
Apparently this only happens when mutating arguments specialized to T, because WALK-METHOD-LAMBDA doesn't detect them as being SETQd, because they don't have %CLASS declarations, because their specializers aren't TYPEP (AND SYMBOL (NOT (EQL T))). Changing (AND SYMBOL (NOT (EQL T))) to SYMBOL on line 853 (or thereabouts) of pcl/boot.lisp "fixes" this, and causes no new failures in the test suite, but I don't know why T is specifically excluded here in the first place, and thus if there is any downside to making this change.
I can go no further: I have a possible fix, but not enough knowledge to be able to evaluate it for appropriateness.