Opened 4 years ago

Closed 4 years ago

#1412 closed defect (fixed)

BOGUS object when using REPLACE with adjustable vectors

Reported by: metawilm Owned by:
Priority: normal Milestone:
Component: Runtime (threads, GC) Version: 1.11
Keywords: Cc:

Description

Using Clozure Common Lisp Version 1.11-r16635 (LinuxX8664):

(let ((x (make-array 3 :adjustable t :fill-pointer 0)))
  (vector-push-extend 1 x)
  (vector-push-extend 2 x)
  (vector-push-extend 3 x)
  (assert (equalp x #(1 2 3)))

  (let* ((twice (make-array (* 2 (length x))
                            :adjustable t
                            :fill-pointer (* 2 (length x))
                            :initial-element nil)))
    (assert (equalp twice #(nil nil nil nil nil nil)))

    (replace twice x :start1 3)
    ;; TWICE should now be: #(NIL NIL NIL 1 2 3)                                                                                                
    (format t "Twice: ~S" twice)))

leads to:

Twice:
> Error: Bug (probably): can't determine class of #<BOGUS object @ #x30200105879D>
> While executing: CCL::NO-CLASS-ERROR, in process listener(1).

Change History (3)

comment:1 Changed 4 years ago by rme

Thanks for taking the time to write a bug.

This is a duplicate of http://trac.clozure.com/ccl/ticket/1359

The fix is a one-line change, but it hasn't been merged to the 1.11 branch.

I would normally just merge it in Subversion, and then you could svn up and rebuild, but I've mostly moved CCL to https://github.com/Clozure/ccl

What's the best thing I can do so you can get a fixed CCL? I can merge the fix to the 1.11 branch on GitHub?, and then you can rebuild from those sources if you want to, although the process is a little cumbersome at the moment. Or you could just patch your own sources.

Please let me know.

comment:2 Changed 4 years ago by metawilm

Thanks for the quick response. I will change my source to work around it.

comment:3 Changed 4 years ago by rme

  • Resolution set to fixed
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.