From c06d5ba3ceccd37810cddb10de96961e5e1a0c38 Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Wed, 25 Apr 2018 19:46:08 +0100 Subject: [PATCH] Guard against double-adhoc-assertion --- syndicate/dataspace.rkt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/syndicate/dataspace.rkt b/syndicate/dataspace.rkt index 551925f..6aa0087 100644 --- a/syndicate/dataspace.rkt +++ b/syndicate/dataspace.rkt @@ -495,13 +495,15 @@ (bag-change! (ensure-patch-action! ac) assertion +1))) (define (adhoc-retract! ac assertion) - (when (not (void? assertion)) - (set-actor-adhoc-assertions! ac (set-remove (actor-adhoc-assertions ac) assertion)) + (define adhoc-assertions (actor-adhoc-assertions ac)) + (when (and (not (void? assertion)) (set-member? adhoc-assertions assertion)) + (set-actor-adhoc-assertions! ac (set-remove adhoc-assertions assertion)) (retract! ac assertion))) (define (adhoc-assert! ac assertion) - (when (not (void? assertion)) - (set-actor-adhoc-assertions! ac (set-add (actor-adhoc-assertions ac) assertion)) + (define adhoc-assertions (actor-adhoc-assertions ac)) + (when (and (not (void? assertion)) (not (set-member? adhoc-assertions assertion))) + (set-actor-adhoc-assertions! ac (set-add adhoc-assertions assertion)) (assert! ac assertion))) (define (dataspace-unsubscribe! ds h)