[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Bug involving VECTOR-PUSH-EXTEND

Beg to differ (though only a little).  Apparently, KCL uses the
current size of the vector as the default extension (must be in the
report some place).  Of course, extending a vector of size zero by
zero elements still causes trouble.  CLtL only says that, in the
absence of a third argument "it defaults to a ``reasonable''
implementation-dependent value".  Whether using the current size is
``reasonable'' can be left to discussion.  See:

      KCl (Kyoto Common Lisp)  June 3, 1987

      >(setq  v (make-array 0 :fill-pointer 0 :adjustable t))

      >(vector-push-extend 1 v)

      Error: The index, 0, too large.
      Error signalled by VECTOR-PUSH-EXTEND.

      Broken at VECTOR-PUSH-EXTEND.  Type :H for Help.

      Top level.
      >(vector-push-extend 1 v 10)

I have had this problem before.  The way I handle it is through the
fill-pointer.  Say
    (make-array <random, non-0 initial size> :fill-pointer 0 :adjustable t)
and the problem will go away.  (Allocating 1 element for an
adjustable array is not so bad.) Alternatively, get used to
supplying a third argument to vector-push-extend (a practice that
gives you better control anyway).  Hope this helps.

Cesar Augusto  Quiroz Gonzalez

Department of Computer Science     ...allegra!rochester!quiroz
University of Rochester            or
Rochester,  NY 14627               quiroz@cs.rochester.edu