aboutsummaryrefslogtreecommitdiffhomepage
path: root/library/states.ml
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-04-24 11:06:46 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2009-04-24 11:06:46 +0000
commitac4ba8bbc899c3d3db1f1f5e0592ee419ed92994 (patch)
tree76553bf17254804a0173a023402a064ffd7e2b26 /library/states.ml
parentcf71bfb25ddba52c72bdec4507021cd6e5ee06e8 (diff)
Backporting 12080 (fixing bug #2091 on bad rollback in the "where"
clause resulting in stray notations for e.g. variable named "le") and 12083 (fixing bug in as clause of apply in) from trunk. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@12103 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'library/states.ml')
-rw-r--r--library/states.ml7
1 files changed, 7 insertions, 0 deletions
diff --git a/library/states.ml b/library/states.ml
index c985dcf2c..4fbc4c886 100644
--- a/library/states.ml
+++ b/library/states.ml
@@ -35,3 +35,10 @@ let with_heavy_rollback f x =
f x
with reraise ->
(unfreeze st; raise reraise)
+
+let with_state_protection f x =
+ let st = freeze () in
+ try
+ let a = f x in unfreeze st; a
+ with reraise ->
+ (unfreeze st; raise reraise)