From e44656e9bb4b09eaa03ab8ca4f58f2be21eb291f Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Sun, 8 Nov 2009 15:38:33 +0100 Subject: [PATCH] src/cmp/cmpmain.lsp: when building a standalone executable, wrap everything with a CL_CATCH_ALL to provide an exit point for EXT:QUIT and also to protect from unwanted transfers of control. --- src/CHANGELOG | 3 +++ src/cmp/cmpmain.lsp | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/CHANGELOG b/src/CHANGELOG index 750749b37..200b39713 100755 --- a/src/CHANGELOG +++ b/src/CHANGELOG @@ -52,6 +52,9 @@ ECL 9.11.1: standalone programs the prologue code is always executed after cl_boot() has been invoked. + - QUIT did not work from standalone executables created with neither ASDF + nor with C:BUILDER. + ;;; Local Variables: *** ;;; mode:text *** ;;; fill-column:79 *** diff --git a/src/cmp/cmpmain.lsp b/src/cmp/cmpmain.lsp index 0a8cecd48..79783e830 100755 --- a/src/cmp/cmpmain.lsp +++ b/src/cmp/cmpmain.lsp @@ -262,9 +262,11 @@ int main(int argc, char **argv) { cl_boot(argc, argv); + CL_CATCH_ALL_BEGIN(ecl_process_env()) { ~A read_VV(OBJNULL, ~A); ~A + } CL_CATCH_ALL_END; }") #+:win32 @@ -277,9 +279,11 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdS int argc; ecl_get_commandline_args(&argc, &argv); cl_boot(argc, argv); + CL_CATCH_ALL_BEGIN(ecl_process_env()) { ~A read_VV(OBJNULL, ~A); ~A + } CL_CATCH_ALL_END; }") (defun init-function-name (s &key (kind :object))