You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.3 KiB
57 lines
2.3 KiB
9 years ago
|
diff -uNr sexplib-113.33.00/_oasis sexplib-113.33.00+4.03/_oasis
|
||
|
--- sexplib-113.33.00/_oasis 2016-03-09 16:44:55.000000000 +0100
|
||
|
+++ sexplib-113.33.00+4.03/_oasis 2016-03-22 15:13:51.000000000 +0100
|
||
|
@@ -1,8 +1,8 @@
|
||
|
OASISFormat: 0.4
|
||
|
-OCamlVersion: >= 4.02.3
|
||
|
+OCamlVersion: >= 4.03.0
|
||
|
FindlibVersion: >= 1.3.2
|
||
|
Name: sexplib
|
||
|
-Version: 113.33.00
|
||
|
+Version: 113.33.00+4.03
|
||
|
Synopsis: Library for serializing OCaml values to and from S-expressions
|
||
|
Authors: Jane Street Group, LLC <opensource@janestreet.com>
|
||
|
Copyrights: (C) 2005-2016 Jane Street Group LLC <opensource@janestreet.com>
|
||
|
diff -uNr sexplib-113.33.00/src/conv.ml sexplib-113.33.00+4.03/src/conv.ml
|
||
|
--- sexplib-113.33.00/src/conv.ml 2016-03-09 16:44:55.000000000 +0100
|
||
|
+++ sexplib-113.33.00+4.03/src/conv.ml 2016-03-22 15:13:51.000000000 +0100
|
||
|
@@ -185,7 +185,7 @@
|
||
|
|
||
|
(* [Obj.extension_id] works on both the exception itself, and the extension slot of the
|
||
|
exception. *)
|
||
|
- let rec clean_up_handler (slot : Obj.t) =
|
||
|
+ let rec clean_up_handler (slot : extension_constructor) =
|
||
|
let id = Obj.extension_id slot in
|
||
|
let old_exn_id_map = !exn_id_map in
|
||
|
let new_exn_id_map = Exn_ids.remove id old_exn_id_map in
|
||
|
@@ -196,7 +196,7 @@
|
||
|
exn_id_map := new_exn_id_map
|
||
|
|
||
|
let add_auto ?(finalise = true) exn sexp_of_exn =
|
||
|
- let id = Obj.extension_id exn in
|
||
|
+ let id = Obj.extension_id (Obj.extension_constructor exn) in
|
||
|
let rec loop () =
|
||
|
let old_exn_id_map = !exn_id_map in
|
||
|
let new_exn_id_map = Exn_ids.add id sexp_of_exn old_exn_id_map in
|
||
|
@@ -205,13 +205,18 @@
|
||
|
loop ()
|
||
|
else begin
|
||
|
exn_id_map := new_exn_id_map;
|
||
|
- if finalise then Gc.finalise clean_up_handler (Obj.extension_slot exn)
|
||
|
+ if finalise then
|
||
|
+ try
|
||
|
+ Gc.finalise clean_up_handler (Obj.extension_constructor exn)
|
||
|
+ with Invalid_argument _ ->
|
||
|
+ (* Pre-allocated extension constructors cannot be finalised *)
|
||
|
+ ()
|
||
|
end
|
||
|
in
|
||
|
loop ()
|
||
|
|
||
|
let find_auto exn =
|
||
|
- let id = Obj.extension_id exn in
|
||
|
+ let id = Obj.extension_id (Obj.extension_constructor exn) in
|
||
|
match Exn_ids.find id !exn_id_map with
|
||
|
| exception Not_found -> None
|
||
|
| sexp_of_exn -> Some (sexp_of_exn exn)
|