edit_document: join parent execution in synchronous/uninterruptible mode, to prevent spurious interrupts when cascaded executions run into each other;
authorwenzelm
Tue, 20 Jul 2010 18:19:50 +0200
changeset 37855 1ad8205078d4
parent 37854 047c96f41455
child 37856 173974e07dea
edit_document: join parent execution in synchronous/uninterruptible mode, to prevent spurious interrupts when cascaded executions run into each other;
src/Pure/Isar/isar_document.ML
--- a/src/Pure/Isar/isar_document.ML	Tue Jul 20 17:35:42 2010 +0200
+++ b/src/Pure/Isar/isar_document.ML	Tue Jul 20 18:19:50 2010 +0200
@@ -242,7 +242,7 @@
       val old_execution = ! execution;
       val _ = Future.cancel old_execution;
       val new_execution = Future.fork (fn () =>
-       (Future.join_result old_execution;
+       (uninterruptible (K Future.join_result) old_execution;
         fold_entries no_id (fn (_, {state, ...}) => fn () => force_state state) document ()));
     in execution := new_execution end);