Hi,
I see the following bug with CVS McCLIM using Closure and mcclim-freetype, on SBCL. I recall a previous command with "M-p" (for some reason I seem to need to type that twice for it to have an effect), then backspace until the entire argument of the command has been erased, then run into the following error.
This problem seems to be correlated to the fact that backspacing over the command arguments causes the entire command (including elements that have not yet been deleted) to move leftwards by a few pixels per backspace.
The value -1 is not of type (UNSIGNED-BYTE 60). [Condition of type TYPE-ERROR]
Restarts: 0: [ABORT] Return to application command loop 1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "Closure" {1003C214C1}>)
Backtrace: 0: (SB-PRETTY::MAKE-PRETTY-STREAM #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}>) Locals: SB-DEBUG::ARG-0 = 1 SB-DEBUG::ARG-1 = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> 1: (SB-PRETTY:OUTPUT-PRETTY-OBJECT "Visit" #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}>) Locals: SB-DEBUG::ARG-0 = 2 SB-DEBUG::ARG-1 = "Visit" SB-DEBUG::ARG-2 = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> Catch-tags: SB-PRETTY::LINE-LIMIT-ABBREVIATION-HAPPENED 2: (PRINC "Visit" #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}>) Locals: SB-IMPL::OBJECT = "Visit" STREAM = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> 3: ((FLET #:CONTINUATION543) #<unavailable argument> #<unavailable argument>) Locals: SB-DEBUG::ARG-0 = :<NOT-AVAILABLE> SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> 4: ((SB-PCL::FAST-METHOD CLIM:INVOKE-WITH-NEW-OUTPUT-RECORD (CLIM:OUTPUT-RECORDING-STREAM #1="#<...>" . #1#)) #<unused argument> #<unused argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:CONTINUATION543) {1002917999}> #<unused argument> #<CLOSURE (FLET #:CONSTRUCTOR542) {1002917959}> :PARENT NIL) Locals: CLIM-INTERNALS::CONSTRUCTOR = #<CLOSURE (FLET #:CONSTRUCTOR542) {1002917959}> CLIM-INTERNALS::CONTINUATION = #<CLOSURE (FLET #:CONTINUATION543) {1002917999}> #:PARENT-DEFAULTING-TEMP = NIL STREAM = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> 5: ((SB-PCL::FAST-METHOD CLIM:STREAM-PRESENT (CLIM:OUTPUT-RECORDING-STREAM #1="#<...>" . #1#)) #<unused argument> #<unused argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> "Visit" STRING :VIEW #<DREI:DREI-TEXTUAL-VIEW {1005D30231}> :MODIFIER NIL :ACCEPTABLY NIL :FOR-CONTEXT-TYPE STRING :SINGLE-BOX NIL :ALLOW-SENSITIVE-INFERIORS T :SENSITIVE T :RECORD-TYPE CLIM:STANDARD-PRESENTATION) Locals: #:ACCEPTABLY-DEFAULTING-TEMP = NIL #:ALLOW-SENSITIVE-INFERIORS-DEFAULTING-TEMP = T #:FOR-CONTEXT-TYPE-DEFAULTING-TEMP = STRING #:MODIFIER-DEFAULTING-TEMP = NIL #:N-SUPPLIED-530 = T #:N-SUPPLIED-531 = T CLIM-INTERNALS::OBJECT = "Visit" #:RECORD-TYPE-DEFAULTING-TEMP = CLIM:STANDARD-PRESENTATION #:SENSITIVE-DEFAULTING-TEMP = T #:SINGLE-BOX-DEFAULTING-TEMP = NIL STREAM = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> TYPE = STRING #:VIEW-DEFAULTING-TEMP = #<DREI:DREI-TEXTUAL-VIEW {1005D30231}> 6: ((SB-PCL::FAST-METHOD CLIM:INVOKE-WITH-NEW-OUTPUT-RECORD (CLIM:OUTPUT-RECORDING-STREAM #1="#<...>" . #1#)) #<unused argument> #<unused argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:CONTINUATION691) {1002917719}> #<unused argument> #<FUNCTION (FLET #:CONSTRUCTOR690) {1008430679}> :PARENT NIL) Locals: CLIM-INTERNALS::CONSTRUCTOR = #<FUNCTION (FLET #:CONSTRUCTOR690) {1008430679}> CLIM-INTERNALS::CONTINUATION = #<CLOSURE (FLET #:CONTINUATION691) {1002917719}> #:PARENT-DEFAULTING-TEMP = NIL STREAM = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> 7: (CLIM-INTERNALS::%INVOKE-UPDATING #<CLIM:STANDARD-UPDATING-OUTPUT-RECORD X 0:0 Y 2137:2137 (# . 1) {100350BE41}> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION315) {1002917209}>) Locals: SB-DEBUG::ARG-0 = #<CLIM:STANDARD-UPDATING-OUTPUT-RECORD X 0:0 Y 2137:2137 (#<DREI:DREI-AREA X -1:10 Y 2137:2152 {1005D2FA71}> . 1) {100350BE41}> SB-DEBUG::ARG-1 = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> SB-DEBUG::ARG-2 = #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION315) {1002917209}> 8: ((SB-PCL::FAST-METHOD CLIM-INTERNALS::COMPUTE-NEW-OUTPUT-RECORDS-1 (CLIM:STANDARD-UPDATING-OUTPUT-RECORD T T)) #<unavailable argument> #<unavailable argument> #<CLIM:STANDARD-UPDATING-OUTPUT-RECORD X 0:0 Y 2137:2137 (# . 1) {100350BE41}> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION315) {1002917209}>) Locals: SB-DEBUG::ARG-0 = :<NOT-AVAILABLE> SB-DEBUG::ARG-1 = :<NOT-AVAILABLE> SB-DEBUG::ARG-2 = #<CLIM:STANDARD-UPDATING-OUTPUT-RECORD X 0:0 Y 2137:2137 (#<DREI:DREI-AREA X -1:10 Y 2137:2152 {1005D2FA71}> . 1) {100350BE41}> SB-DEBUG::ARG-3 = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> SB-DEBUG::ARG-4 = #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION315) {1002917209}> 9: ((SB-PCL::FAST-METHOD CLIM:INVOKE-UPDATING-OUTPUT (CLIM-INTERNALS::UPDATING-OUTPUT-STREAM-MIXIN #1="#<...>" . #1#)) #<unused argument> #<unused argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION315) {1002917209}> CLIM:STANDARD-UPDATING-OUTPUT-RECORD #<unavailable argument> #<FUNCTION EQUAL> "Visit" #<FUNCTION EQUAL> :FIXED-POSITION NIL :ALL-NEW NIL :PARENT-CACHE NIL) Locals: #:ALL-NEW-DEFAULTING-TEMP = NIL CLIM-INTERNALS::CACHE-TEST = #<FUNCTION EQUAL> CLIM-INTERNALS::CACHE-VALUE = "Visit" CLIM-INTERNALS::CONTINUATION = #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION315) {1002917209}> #:FIXED-POSITION-DEFAULTING-TEMP = NIL CLIM-INTERNALS::ID-TEST = #<FUNCTION EQUAL> #:PARENT-CACHE-DEFAULTING-TEMP = NIL CLIM-INTERNALS::RECORD-TYPE = CLIM:STANDARD-UPDATING-OUTPUT-RECORD STREAM = #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> CLIM-INTERNALS::UNIQUE-ID = :<NOT-AVAILABLE> 10: ((FLET DREI-FUNDAMENTAL-SYNTAX::OUTPUT-WORD)) 11: ((SB-PCL::FAST-METHOD DREI-FUNDAMENTAL-SYNTAX::DISPLAY-LINE (CLIM:CLIM-STREAM-PANE DREI:DREI T)) #<unavailable argument> #<unavailable argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<DREI:DREI-AREA X -1:10 Y 2137:2152 {1005D2FA71}> #<DREI-BUFFER:STANDARD-LEFT-STICKY-MARK 0 {1006C436D1}>) 12: ((SB-PCL::FAST-METHOD CLIM:INVOKE-WITH-NEW-OUTPUT-RECORD (CLIM:OUTPUT-RECORDING-STREAM #1="#<...>" . #1#)) #<unused argument> #<unused argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:CONTINUATION691) {1002916939}> #<unused argument> #<FUNCTION (FLET #:CONSTRUCTOR690) {1008430679}> :PARENT NIL) 13: (CLIM-INTERNALS::%INVOKE-UPDATING #<CLIM:STANDARD-UPDATING-OUTPUT-RECORD X 0:0 Y 2137:2137 (# . 0) {10029B88B1}> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION376) {10029141A9}>) 14: ((SB-PCL::FAST-METHOD CLIM-INTERNALS::COMPUTE-NEW-OUTPUT-RECORDS-1 (CLIM:STANDARD-UPDATING-OUTPUT-RECORD T T)) #<unavailable argument> #<unavailable argument> #<CLIM:STANDARD-UPDATING-OUTPUT-RECORD X 0:0 Y 2137:2137 (# . 0) {10029B88B1}> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION376) {10029141A9}>) 15: ((SB-PCL::FAST-METHOD CLIM:INVOKE-UPDATING-OUTPUT (CLIM-INTERNALS::UPDATING-OUTPUT-STREAM-MIXIN #1="#<...>" . #1#)) #<unused argument> #<unused argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<CLOSURE (FLET #:UPDATING-OUTPUT-CONTINUATION376) {10029141A9}> CLIM:STANDARD-UPDATING-OUTPUT-RECORD #<unavailable argument> #<FUNCTION EQUAL> #<DREI-FUNDAMENTAL-SYNTAX::LINE-OBJECT {1002DB9251}> #<FUNCTION EQUAL> :FIXED-POSITION NIL :ALL-NEW NIL :PARENT-CACHE NIL) 16: ((SB-PCL::FAST-METHOD DREI:DISPLAY-DREI-CONTENTS (CLIM:CLIM-STREAM-PANE DREI:DREI DREI-FUNDAMENTAL-SYNTAX:FUNDAMENTAL-SYNTAX)) (#(17 16 4) . #()) #<unavailable argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<DREI:DREI-AREA X -1:10 Y 2137:2152 {1005D2FA71}> #<DREI-FUNDAMENTAL-SYNTAX:FUNDAMENTAL-SYNTAX {1006C8EEB1}>) 17: ((LAMBDA (SB-PCL::.PV-CELL. SB-PCL::.NEXT-METHOD-CALL. SB-PCL::.ARG0. SB-PCL::.ARG1. SB-PCL::.ARG2.)) #<unavailable argument> #<unavailable argument> #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<DREI:DREI-AREA X -1:10 Y 2137:2152 {1005D2FA71}> #<DREI-FUNDAMENTAL-SYNTAX:FUNDAMENTAL-SYNTAX {1006C8EEB1}>) 18: ((SB-PCL::FAST-METHOD DREI:DISPLAY-DREI-CONTENTS :AROUND (CLIM:EXTENDED-OUTPUT-STREAM DREI:DREI DREI-SYNTAX:SYNTAX)) #<unavailable argument> #S(SB-PCL::FAST-METHOD-CALL :FUNCTION #<CLOSURE # {100ADB9D29}> :PV-CELL NIL :NEXT-METHOD-CALL NIL :ARG-INFO (3)) #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}> #<DREI:DREI-AREA X -1:10 Y 2137:2152 {1005D2FA71}> #<DREI-FUNDAMENTAL-SYNTAX:FUNDAMENTAL-SYNTAX {1006C8EEB1}>) 19: ((FLET #:CONTINUATION449) #<CLIM:INTERACTOR-PANE CLIM-USER::INTERACTOR {1004A50371}>) --more--
Eric Marsden eric.marsden@free.fr writes:
I see the following bug with CVS McCLIM using Closure and mcclim-freetype, on SBCL. I recall a previous command with "M-p" (for some reason I seem to need to type that twice for it to have an effect), then backspace until the entire argument of the command has been erased, then run into the following error.
This seems to be a McCLIM Freetype problem that causes some strings to be printed one pixel to the left of where the stream cursor is actually positioned. Goatee doesn't suffer from this problem because it ignores text styles, but in Drei, the input will walk a pixel to the left for every redisplay. I think this problem is font-dependent, as I could only get it to show up with a :sans-serif font. This Listener session sort of shows the problem (notice that the output records have different positions based on which string is printed - I guess the variable-width and anti-aliasing stuff causes it):
http://sigkill.dk/athas/vimi.png