[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: QD arcs
- To: Ranson <ranson@LANNION.cnet.fr>
- Subject: Re: QD arcs
- From: bill@cambridge.apple.com (Bill St. Clair)
- Date: Mon, 25 Oct 1993 14:36:34 -0500
- Cc: bug-mcl@cambridge.apple.com, info-mcl
At 10:28 AM 10/25/93 +0000, Ranson wrote:
>I think I have found the problem : some of my parameters are floats. Shouldn't
>the trap calling code at least complain about that ?
> Daniel.
The trap expansion code checks types of 2-byte args to traps only
if the SAFETY optimization quantity is 3. Hence, your code would not
check the types unless you had safety globally PROCLAIMed to be 3:
(defun draw-arc (x y a da r)
(rlet ((rc :rect))
(setf (rref rc :rect.top) (- y r)
(rref rc :rect.left) (- x r)
(rref rc :rect.bottom) (+ y r)
(rref rc :rect.right) (+ x r))
(#_FrameArc rc a da)))
Changing your draw-arc function as follows enables run-time type checking
for the #_FrameArc call and makes your example run:
(defun draw-arc (x y a da r)
(declare (optimize (safety 3)))
(rlet ((rc :rect))
(setf (rref rc :rect.top) (round (- y r))
(rref rc :rect.left) (round (- x r))
(rref rc :rect.bottom) (round (+ y r))
(rref rc :rect.right) (round (+ x r)))
(#_FrameArc rc (round a) (round da))))