Changeset 13468


Ignore:
Timestamp:
Feb 27, 2010, 8:18:21 PM (10 years ago)
Author:
gb
Message:

Don't assume that the vector that encodes stack/register addresses and
PC ranges in a function's symbol-map is a SIMPLE-VECTOR. (I think
that I caught all such cases in this file, but may have missed any
cases in other files.)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lib/backtrace.lisp

    r13067 r13468  
    331331      (let* ((addrs (cdr info))
    332332             (i (* 3 idx))
    333              (addr (svref addrs i))
    334              (startpc (svref addrs (the fixnum (+ i 1))))
    335              (endpc (svref addrs (the fixnum (+ i 2)))))
     333             (addr (uvref addrs i))
     334             (startpc (uvref addrs (the fixnum (+ i 1))))
     335             (endpc (uvref addrs (the fixnum (+ i 2)))))
    336336        (declare (fixnum i addr startpc endpc))
    337337        (if (or (< pc startpc)
     
    357357
    358358        (let* ((addrs (cdr (function-symbol-map lfun)))
    359                (addr (svref addrs (the fixnum (* 3 idx)))))
     359               (addr (uvref addrs (the fixnum (* 3 idx)))))
    360360          (declare (fixnum  addr))
    361361          (if (= #o77 (ldb (byte 6 0) addr))
     
    379379          (when (eq (svref names nname) name)
    380380            (let* ((value
    381                     (let* ((addr (svref addrs naddr))
    382                            (startpc (svref addrs (the fixnum (1+ naddr))))
    383                            (endpc (svref addrs (the fixnum (+ naddr 2)))))
     381                    (let* ((addr (uvref addrs naddr))
     382                           (startpc (uvref addrs (the fixnum (1+ naddr))))
     383                           (endpc (uvref addrs (the fixnum (+ naddr 2)))))
    384384                      (declare (fixnum addr startpc endpc))
    385385                      (if (or (< pc startpc)
Note: See TracChangeset for help on using the changeset viewer.