こないだ入れた 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 とかでやるのが正しいと思うけど、今はこれでいいや。
マクロわかってないとこういうのがつらいなぁ。
0 コメント :
コメントを投稿