aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgareuselesinge2013-10-22 14:31:44 +0000
committergareuselesinge2013-10-22 14:31:44 +0000
commitb16c1a41dc9e4a00abb734dc820fff396c338634 (patch)
tree09f1139b8ce7ed0c366e83ec092ec90abc98b608
parentcd3f043404181514ff44357058e7bf705c865504 (diff)
STM: do not enrich exceptions more than once
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@16908 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--toplevel/stm.ml11
1 files changed, 7 insertions, 4 deletions
diff --git a/toplevel/stm.ml b/toplevel/stm.ml
index fdd24f7e48..f63cd9e4e5 100644
--- a/toplevel/stm.ml
+++ b/toplevel/stm.ml
@@ -533,10 +533,13 @@ end = struct (* {{{ *)
let freeze marhallable id = VCS.set_state id (freeze_global_state marhallable)
let exn_on id ?valid e =
- let loc = Option.default Loc.ghost (Loc.get_loc e) in
- let msg = string_of_ppcmds (print e) in
- Pp.feedback ~state_id:id (Interface.ErrorMsg (loc, msg));
- Stateid.add e ?valid id
+ match Stateid.get e with
+ | Some _ -> e
+ | None ->
+ let loc = Option.default Loc.ghost (Loc.get_loc e) in
+ let msg = string_of_ppcmds (print e) in
+ Pp.feedback ~state_id:id (Interface.ErrorMsg (loc, msg));
+ Stateid.add e ?valid id
let define ?(redefine=false) ?(cache=`No) f id =
let str_id = Stateid.to_string id in