Ignore:
Timestamp:
Feb 12, 2013, 12:21:40 AM (8 years ago)
Author:
gb
Message:

If _SPmisc_alloc is called with an "element-count" argument >=
ARRAY-TOTAL-SIZE-LIMIT, call out to lisp rather than executing a type
error UUO. On the lisp side, signal a VECTOR-SIZE-LIMITATION, which
is a kind of STORAGE-CONDITION.

CALL-WITH-STRING-VECTOR takes an ENCODING argument and uses that
character encoding to encode the strings in the vector. (It assumes
an 8-bit encoding; the strings are terminated with single #\NUL bytes.)
On Unix, RUN-PROGRAM calls CALL-WITH-STRING-VECTOR with the encoding from
its EXTERNAL-FORMAT argument.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-1/l1-error-signal.lisp

    r14844 r15703  
    5454  ;;; The compiler (finally !) won't tail-apply error.  But we kind of
    5555  ;;; expect it to ...
    56   (let* ((err-typ (max (ash err-num -16) 0))
    57          (err-num (%word-to-int err-num))
    58          (format-string (%rsc-string err-num)))
    59     (%err-disp-common err-num err-typ format-string errargs frame-ptr)))
     56  (if (eql err-num $XARRLIMIT)
     57    (%error (make-condition 'vector-size-limitation
     58                            :subtag (cadr errargs)
     59                            :element-count (car errargs))
     60            nil
     61            frame-ptr)
     62    (let* ((err-typ (max (ash err-num -16) 0))
     63           (err-num (%word-to-int err-num))
     64           (format-string (%rsc-string err-num)))
     65      (%err-disp-common err-num err-typ format-string errargs frame-ptr))))
    6066
    6167(defparameter *foreign-error-condition-recognizers* ())
Note: See TracChangeset for help on using the changeset viewer.