>>>>> "ch" == Chisheng Huang <[EMAIL PROTECTED]> writes:
ch> This does not give a stack overflow in cmucl-2003-10-x86-linux ch> and cmucl 18e. Does anybody know why redefining ch> EXT:INTERACTIVE-EVAL in this way doesn't work anymore in ch> cmucl-2003-11-x86-linux? Any possible hooks for me to achieve ch> the same effect? this does seem to be a bug that has been introduced in the compiler or interpreter. EXT:INTERACTIVE-EVAL is being called recursively for some reason. In older CMUCL versions without control stack overflow protection, CMUCL would have died mysteriously in these circumstances. However, there are better ways to attain your objective, that won't trigger this bug. In many situations, you can avoid redefining an internal function of your implementation (and resulting "undefined consequences") by using the symbol shadowing mechanism of the package system. This means that your new definition is only seen by functions in your packages, and won't perturb the rest of the implementation. If you really need to redefine an internal function globally, you can use CMUCL's fwrappers, a new feature implemented by Gerd Moellman. They are documented in the development version of the CMUCL User's Manual, which you can obtain in various formats in the snapshots directory of the download site. ,---- | (use-package :fwrappers) | | (define-fwrapper gdk-flush-fwrapper (form) | (let ((values (multiple-value-list (call-next-function form)))) | (print "call gdk flush") | (finish-output) | (values-list values))) | | (fwrap 'ext:interactive-eval #'gdk-flush-fwrapper | :type :gdk-flush) `---- -- Eric Marsden <URL:http://www.laas.fr/~emarsden/>
