2011/04/05

trace の表示が狂う。



こないだ入れた trace だけど、


書いた再帰がバグってたりすると、無限ループになってスタックオーバーフローが出ることがある。


するとそれ以降は、結果表示のインデントが大幅に狂ってしまうようだ。


いかにもパッチ当てだけど、使えるようにしてみた。



;; mod
(defmacro trace (&rest args)
(setq *trace-depth* 0) ; add
(if (null args)
'*trace-function-list*
`(let (lst)
(dolist (func ',args (reverse lst))
(when (trace-encap func)
(setq lst (cons func lst)))))))


本当は unwind-protect とかでやるのが正しいと思うけど、今はこれでいいや。


マクロわかってないとこういうのがつらいなぁ。





Related Posts Plugin for WordPress, Blogger...

0 コメント :

コメントを投稿