From faeb63f6a1ad7d4cb12aff93511948ad78bb2006 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 25 Dec 2005 16:36:28 +0000 Subject: [PATCH] fix port sync/break bug svn: r1687 --- src/mzscheme/src/thread.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mzscheme/src/thread.c b/src/mzscheme/src/thread.c index 149ad0e68e..54f2d03125 100644 --- a/src/mzscheme/src/thread.c +++ b/src/mzscheme/src/thread.c @@ -278,6 +278,7 @@ static void register_thread_sync(); static Scheme_Object *sch_sync(int argc, Scheme_Object *args[]); static Scheme_Object *sch_sync_timeout(int argc, Scheme_Object *args[]); +static Scheme_Object *sch_sync_enable_break(int argc, Scheme_Object *args[]); static Scheme_Object *sch_sync_timeout_enable_break(int argc, Scheme_Object *args[]); static Scheme_Object *evt_p(int argc, Scheme_Object *args[]); static Scheme_Object *evts_to_evt(int argc, Scheme_Object *args[]); @@ -696,7 +697,7 @@ void scheme_init_thread(Scheme_Env *env) 2, -1), env); scheme_add_global_constant("sync/enable-break", - scheme_make_prim_w_arity(scheme_sync_enable_break, + scheme_make_prim_w_arity(sch_sync_enable_break, "sync/enable-break", 1, -1), env); @@ -5320,24 +5321,29 @@ Scheme_Object *scheme_sync_timeout(int argc, Scheme_Object *argv[]) return do_sync("sync/timeout", argc, argv, 0, 1, 0); } -static Scheme_Object *do_scheme_sync_enable_break(const char *who, int with_timeout, int argc, Scheme_Object *argv[]) +static Scheme_Object *do_scheme_sync_enable_break(const char *who, int with_timeout, int tailok, int argc, Scheme_Object *argv[]) { if (argc == 2 && SCHEME_FALSEP(argv[0]) && SCHEME_SEMAP(argv[1])) { scheme_wait_sema(argv[1], -1); return scheme_void; } - return do_sync(who, argc, argv, 1, with_timeout, 1); + return do_sync(who, argc, argv, 1, with_timeout, tailok); } Scheme_Object *scheme_sync_enable_break(int argc, Scheme_Object *argv[]) { - return do_scheme_sync_enable_break("sync/enable-break", 0, argc, argv); + return do_scheme_sync_enable_break("sync/enable-break", 0, 0, argc, argv); +} + +static Scheme_Object *sch_sync_enable_break(int argc, Scheme_Object *argv[]) +{ + return do_scheme_sync_enable_break("sync/enable-break", 0, 1, argc, argv); } static Scheme_Object *sch_sync_timeout_enable_break(int argc, Scheme_Object *argv[]) { - return do_scheme_sync_enable_break("sync/timeout/enable-break", 1, argc, argv); + return do_scheme_sync_enable_break("sync/timeout/enable-break", 1, 1, argc, argv); } static Scheme_Object *evts_to_evt(int argc, Scheme_Object *argv[])