From 73e1b4c5e2ef032a7fbf42582554e80e2a9441f5 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Thu, 26 Feb 2009 02:59:29 -0600 Subject: [PATCH] Better error recovery for set-model --- basis/models/models.factor | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/basis/models/models.factor b/basis/models/models.factor index 5da564b9d0..4f7aafe3e3 100644 --- a/basis/models/models.factor +++ b/basis/models/models.factor @@ -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