]> gitweb.factorcode.org Git - factor.git/commitdiff
Better error recovery for set-model
authorSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 26 Feb 2009 08:59:29 +0000 (02:59 -0600)
committerSlava Pestov <slava@slava-pestovs-macbook-pro.local>
Thu, 26 Feb 2009 08:59:29 +0000 (02:59 -0600)
basis/models/models.factor

index 5da564b9d08fed793d59b8761504c7c3cbd1985e..4f7aafe3e33ac1b4093b90a50a152c9593cbbfc8 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2006, 2008 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors generic kernel math sequences arrays assocs
-alarms calendar math.order ;
+alarms calendar math.order continuations fry ;
 IN: models
 
 TUPLE: model < identity-tuple
@@ -68,10 +68,9 @@ GENERIC: model-changed ( model observer -- )
     drop ;
 
 : with-locked-model ( model quot -- )
-    swap
-    t >>locked?
-    slip
-    f >>locked? drop ; inline
+    [ '[ _ t >>locked? @ ] ]
+    [ drop '[ _ f >>locked? drop ] ]
+    2bi [ ] cleanup ; inline
 
 GENERIC: update-model ( model -- )
 
@@ -84,7 +83,7 @@ M: model update-model drop ;
     dup locked?>> [
         2drop
     ] [
-        dup [
+        [
             swap >>value
             [ update-model ] [ notify-connections ] bi
         ] with-locked-model