mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-02 04:40:29 +02:00
* module/system/il/compile.scm (codegen): Rewrite handling of `and' and `or' ghil compilation, because it was broken if drop was #t. Tricky bug, this one! Took me days to track down! * module/system/repl/repl.scm: Export call-with-backtrace, which probably should go in some other file. * src/vm.c (scm_vm_save_stack): Handle the fp==0 case for errors before we have a frame. * src/vm_engine.h (NEW_FRAME, FREE_FRAME): Stricter underflow checking, raising the stack base to the return address, in an attempt to prevent inadvertant stack smashing (the symptom of the and/or miscompilation bug). (CHECK_IP): A check that the current IP is within the bounds of the current program. Not normally compiled in. Perhaps it should be? * src/vm_system.c (halt): Set vp->ip to NULL. Paranoia, I know. (return): Call CHECK_IP(), if such a thing is compiled in. * testsuite/Makefile.am (vm_test_files): * testsuite/t-catch.scm: * testsuite/t-map.scm: * testsuite/t-or.scm: New tests. |
||
---|---|---|
.. | ||
Makefile.am | ||
run-vm-tests.scm | ||
t-basic-contructs.scm | ||
t-catch.scm | ||
t-closure.scm | ||
t-closure2.scm | ||
t-closure3.scm | ||
t-do-loop.scm | ||
t-global-bindings.scm | ||
t-macros.scm | ||
t-macros2.scm | ||
t-map.scm | ||
t-match.scm | ||
t-mutual-toplevel-defines.scm | ||
t-or.scm | ||
t-proc-with-setter.scm | ||
t-records.scm | ||
t-values.scm | ||
the-bug.txt |