aboutsummaryrefslogtreecommitdiffhomepage
path: root/library
diff options
context:
space:
mode:
authorGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2002-10-29 08:05:04 +0000
committerGravatar herbelin <herbelin@85f007b7-540e-0410-9357-904b9bb8a0f7>2002-10-29 08:05:04 +0000
commit8031045106d0205136ac1080f0c019961ea4605d (patch)
tree4dffc378e7551c54260012019a08d411eac53fb0 /library
parent9a3babd8029b04d2888ee0983fa07aedbad770b7 (diff)
Préservation de la cohérence du cache en cas d'erreur au chargement
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3189 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'library')
-rw-r--r--library/library.ml8
1 files changed, 6 insertions, 2 deletions
diff --git a/library/library.ml b/library/library.ml
index c7f3ba433..a653ccc74 100644
--- a/library/library.ml
+++ b/library/library.ml
@@ -362,8 +362,12 @@ let rec intern_library (dir, f) =
pr_dirpath m.library_name ++ spc () ++ str "and not library" ++
spc() ++ pr_dirpath dir);
compunit_cache := CompilingModulemap.add dir m !compunit_cache;
- List.iter (intern_mandatory_library dir) m.library_deps;
- m
+ try
+ List.iter (intern_mandatory_library dir) m.library_deps;
+ m
+ with e ->
+ compunit_cache := CompilingModulemap.remove dir !compunit_cache;
+ raise e
and intern_mandatory_library caller (dir,d) =
let m = intern_absolute_library_from dir in