[cmucl-ticket] [cmucl] #66: replace on simple-strings

#66: replace on simple-strings --------------------+------------------------------------------------------- Reporter: heller | Owner: somebody Type: defect | Status: new Priority: minor | Milestone: Component: Core | Version: 2012-12 Keywords: | --------------------+------------------------------------------------------- This code {{{ (deftype index () `(integer 0 #.array-total-size-limit)) (defun %move-string (from start end to index) (declare (type simple-string from to) (type index start end index)) (replace to from :start1 index :start2 start :end2 end)) (let ((x (make-string 35893164))) (%move-string x 4 4 x 35893164) nil) }}} when executed with `(load (compile-file "test.lisp"))` produces this error: {{{ Type-error in kernel::object-not-type-error-handler: -499451136 is not of type (mod 536870911) [Condition of type type-error] }}} I don't see the bug in my code, so it seems to be a bug in CMUCL. lisp-implementation-version returns "snapshot-2012-12 (20D Unicode)" -- Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/66> cmucl <http://common-lisp.net/project/cmucl> Cmucl is a high-performance, free Common Lisp implementation.

#66: replace on simple-strings --------------------+------------------------------------------------------- Reporter: heller | Owner: somebody Type: defect | Status: new Priority: minor | Milestone: Component: Core | Version: 2012-12 Keywords: | --------------------+------------------------------------------------------- Comment(by rtoy): It's a bug in the {{{DEFTRANSFORM}}} for {{{REPLACE}}}. It uses {{{BIT- BASH-COPY}}} to copy things around and {{{BIT-BASH-COPY}}} uses bit indices. Characters are 16 bits (for unicode builds) so the size (35893164) times 16 overflows a fixnum. Thanks for the report. -- Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/66#comment:1> cmucl <http://common-lisp.net/project/cmucl> Cmucl is a high-performance, free Common Lisp implementation.

#66: replace on simple-strings ---------------------+------------------------------------------------------ Reporter: heller | Owner: somebody Type: defect | Status: closed Priority: minor | Milestone: Component: Core | Version: 2012-12 Resolution: fixed | Keywords: ---------------------+------------------------------------------------------ Changes (by rtoy): * status: new => closed * resolution: => fixed Comment: Oops. This was fixed in commit cdf11377fbdb369d3a3810dd9bd01a8a73007255 There are still issues with very long strings; this needs to be solved in a different way. -- Ticket URL: <http://trac.common-lisp.net/cmucl/ticket/66#comment:2> cmucl <http://common-lisp.net/project/cmucl> Cmucl is a high-performance, free Common Lisp implementation.
participants (1)
-
cmucl