From 2a6f90e52436afdbbcdcf99bfe8a5c24cefd9769 Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Fri, 25 Mar 2011 10:47:10 +0100 Subject: [PATCH] Revert "with-continuation-barrier carps, calls exit(3) _after_ unwinding" This reverts commit ecba00af6501e082b86c8f2f7730081c733509d7. --- libguile/continuations.c | 16 +++------------- test-suite/tests/continuations.test | 13 +------------ 2 files changed, 4 insertions(+), 25 deletions(-) diff --git a/libguile/continuations.c b/libguile/continuations.c index 28b6236c7..dc6850e05 100644 --- a/libguile/continuations.c +++ b/libguile/continuations.c @@ -477,13 +477,7 @@ c_body (void *d) static SCM c_handler (void *d, SCM tag, SCM args) { - struct c_data *data; - - /* Print a message. Note that if TAG is `quit', this will exit() the - process. */ - scm_handle_by_message_noexit (NULL, tag, args); - - data = (struct c_data *)d; + struct c_data *data = (struct c_data *)d; data->result = NULL; return SCM_UNSPECIFIED; } @@ -496,7 +490,7 @@ scm_c_with_continuation_barrier (void *(*func) (void *), void *data) c_data.data = data; scm_i_with_continuation_barrier (c_body, &c_data, c_handler, &c_data, - NULL, NULL); + scm_handle_by_message_noexit, NULL); return c_data.result; } @@ -514,10 +508,6 @@ scm_body (void *d) static SCM scm_handler (void *d, SCM tag, SCM args) { - /* Print a message. Note that if TAG is `quit', this will exit() the - process. */ - scm_handle_by_message_noexit (NULL, tag, args); - return SCM_BOOL_F; } @@ -539,7 +529,7 @@ SCM_DEFINE (scm_with_continuation_barrier, "with-continuation-barrier", 1,0,0, scm_data.proc = proc; return scm_i_with_continuation_barrier (scm_body, &scm_data, scm_handler, &scm_data, - NULL, NULL); + scm_handle_by_message_noexit, NULL); } #undef FUNC_NAME diff --git a/test-suite/tests/continuations.test b/test-suite/tests/continuations.test index a436b90d4..f6db40e58 100644 --- a/test-suite/tests/continuations.test +++ b/test-suite/tests/continuations.test @@ -1,7 +1,7 @@ ;;;; -*- scheme -*- ;;;; continuations.test --- test suite for continutations ;;;; -;;;; Copyright (C) 2003, 2006, 2009, 2011 Free Software Foundation, Inc. +;;;; Copyright (C) 2003, 2006, 2009 Free Software Foundation, Inc. ;;;; ;;;; This library is free software; you can redistribute it and/or ;;;; modify it under the terms of the GNU Lesser General Public @@ -80,17 +80,6 @@ (error "Catch me if you can!"))))))))) handled)) - (pass-if "exit unwinds dynwinds inside a continuation barrier" - (let ((s (with-error-to-string - (lambda () - (with-continuation-barrier - (lambda () - (dynamic-wind - (lambda () #f) - (lambda () (exit 1)) - (lambda () (throw 'abcde))))))))) - (and (string-contains s "abcde") #t))) - (with-debugging-evaluator (pass-if "make a stack from a continuation" -- 2.20.1