diff options
| author | Pierre-Marie Pédrot | 2014-02-03 19:38:26 +0100 |
|---|---|---|
| committer | Pierre-Marie Pédrot | 2014-02-03 21:29:02 +0100 |
| commit | ec4ce9efc02d0f908a7f54ca47520703673e74c4 (patch) | |
| tree | 598541a7ddf2442a5c6b455326d4c344b6da56ef /pretyping | |
| parent | 3ad26e3de5780b84b2723d44d52094bab6b23786 (diff) | |
Tracking memory misallocation by trying to improve sharing.
Diffstat (limited to 'pretyping')
| -rw-r--r-- | pretyping/evarutil.ml | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/pretyping/evarutil.ml b/pretyping/evarutil.ml index 93d9552c0d..264172d0c9 100644 --- a/pretyping/evarutil.ml +++ b/pretyping/evarutil.ml @@ -487,10 +487,11 @@ let clear_hyps_in_evi evdref hyps concl ids = let nconcl = check_and_clear_in_constr evdref (OccurHypInSimpleClause None) ids concl in let nhyps = - let check_context (id,ob,c) = + let check_context ((id,ob,c) as decl) = let err = OccurHypInSimpleClause (Some id) in - (id, Option.map (check_and_clear_in_constr evdref err ids) ob, - check_and_clear_in_constr evdref err ids c) + let ob' = Option.smartmap (fun c -> check_and_clear_in_constr evdref err ids c) ob in + let c' = check_and_clear_in_constr evdref err ids c in + if ob == ob' && c == c' then decl else (id, ob', c') in let check_value vk = match !vk with |
