From eeb05ec857ba97e5b35624dc17882928ad7b715e Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Wed, 12 Mar 2008 02:36:58 -0500 Subject: [PATCH] Fix stack bugs in alarms and UI --- extra/alarms/alarms-tests.factor | 2 ++ extra/alarms/alarms.factor | 7 +++---- extra/ui/ui.factor | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/extra/alarms/alarms-tests.factor b/extra/alarms/alarms-tests.factor index 1af851c9c6..564f22ec95 100755 --- a/extra/alarms/alarms-tests.factor +++ b/extra/alarms/alarms-tests.factor @@ -15,3 +15,5 @@ concurrency.count-downs ; [ resume ] curry instant later drop ] "test" suspend drop ] unit-test + +\ alarm-thread-loop must-infer diff --git a/extra/alarms/alarms.factor b/extra/alarms/alarms.factor index 55a66c5231..adf79c84c9 100755 --- a/extra/alarms/alarms.factor +++ b/extra/alarms/alarms.factor @@ -38,7 +38,7 @@ SYMBOL: alarm-thread : call-alarm ( alarm -- ) dup alarm-entry box> drop - dup alarm-quot try + dup alarm-quot "Alarm execution" spawn drop dup alarm-interval [ reschedule-alarm ] [ drop ] if ; : (trigger-alarms) ( alarms now -- ) @@ -62,8 +62,7 @@ SYMBOL: alarm-thread : alarm-thread-loop ( -- ) alarms get-global dup next-alarm sleep-until - dup trigger-alarms - alarm-thread-loop ; + trigger-alarms ; : cancel-alarms ( alarms -- ) [ @@ -72,7 +71,7 @@ SYMBOL: alarm-thread : init-alarms ( -- ) alarms global [ cancel-alarms ] change-at - [ alarm-thread-loop ] "Alarms" spawn + [ alarm-thread-loop t ] "Alarms" spawn-server alarm-thread set-global ; [ init-alarms ] "alarms" add-init-hook diff --git a/extra/ui/ui.factor b/extra/ui/ui.factor index 477fffe6af..6286297f68 100755 --- a/extra/ui/ui.factor +++ b/extra/ui/ui.factor @@ -148,7 +148,7 @@ SYMBOL: ui-thread \ ui-running get-global ; : update-ui-loop ( -- ) - ui-running? ui-thread get-global self eq? [ + ui-running? ui-thread get-global self eq? and [ ui-notify-flag get lower-flag [ update-ui ] ui-try update-ui-loop