[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
%stack-block wierdness
- To: bug-macl@cambridge.apple.com
- Subject: %stack-block wierdness
- From: engber@aristotle.ils.nwu.edu (Mike Engber)
- Date: Fri, 26 Apr 91 09:42:28 CDT
- Cc: info-macl@cambridge.apple.com
I discovered that the following code will crash my Mac after executing
n times (the value of n varies)
(%stack-block ((p 16))
(mapcar #'(lambda (i) (%put-long p i i) (%get-long p i)) '(0 1 2 3)))
I then discoverd that the docs on %stack-block warn against closing off
the variables it creates. I can see why this is dangerous, but I don't
see why the above code crashes the machine. All my uses of the closed off
variable are within its creating %stack-block.
To check things out further, I wrote a version that prints out the original
pointer and then in the #'(lambda... prints out the closed off pointer
value as mapping occurs. The values matched - so I still can't fathom why
the code crashes my Mac.
The following variation does work:
(defun foo (p)
(mapcan #'(lambda (i) (%put-long p i i) (list (%get-long p i))) '(0 1 2 3)))
(%stack-block ((p 16))
(foo p))
As far as I can tell, this won't crash my Mac. Is it really safe?
-ME