The following commit has been merged in the master branch: commit 3281c74f058dc36ab619008cc852301f6bf66ced Author: Stephane Glondu <st...@glondu.net> Date: Sat Dec 31 10:10:09 2011 +0100
Refresh patches diff --git a/debian/patches/0001-Do-not-build-manual-manual.pdf.patch b/debian/patches/0001-Do-not-build-manual-manual.pdf.patch index 05af968..3a8b94e 100644 --- a/debian/patches/0001-Do-not-build-manual-manual.pdf.patch +++ b/debian/patches/0001-Do-not-build-manual-manual.pdf.patch @@ -7,7 +7,7 @@ Subject: Do not build manual/manual.pdf 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/setup.ml b/setup.ml -index 8e925d1..91ad1db 100644 +index f799762..89f1a90 100644 --- a/setup.ml +++ b/setup.ml @@ -5160,7 +5160,7 @@ let setup_t = diff --git a/debian/patches/0002-fix-a-race-condition-in-Lwt_io.patch b/debian/patches/0002-fix-a-race-condition-in-Lwt_io.patch deleted file mode 100644 index 2dac1fe..0000000 --- a/debian/patches/0002-fix-a-race-condition-in-Lwt_io.patch +++ /dev/null @@ -1,121 +0,0 @@ -From: Jeremie Dimino <jere...@dimino.org> -Date: Thu, 28 Jul 2011 13:23:03 +0200 -Subject: fix a race condition in Lwt_io - -Origin: http://ocsigen.org/darcsweb/?r=lwt;a=commit;h=20110718145731-c41ad-7ced2812fef6069e83864996a274e5e55db1aaf4.gz ---- - src/unix/lwt_io.ml | 30 ++++++++++++++++++------------ - 1 files changed, 18 insertions(+), 12 deletions(-) - -diff --git a/src/unix/lwt_io.ml b/src/unix/lwt_io.ml -index ce2b36c..28d8935 100644 ---- a/src/unix/lwt_io.ml -+++ b/src/unix/lwt_io.ml -@@ -58,6 +58,9 @@ type 'mode state = - (* An atomic operations is being performed on the channel. The - argument is the temporary atomic wrapper. *) - -+ | Waiting_for_busy -+ (* A queued operation has not yet started. *) -+ - | Idle - (* The channel is unused *) - -@@ -169,7 +172,7 @@ let is_busy ch = - raise (invalid_channel ch.channel) - | Idle | Closed -> - false -- | Busy_primitive | Busy_atomic _ -> -+ | Busy_primitive | Busy_atomic _ | Waiting_for_busy -> - true - - (* Flush/refill the buffer. No race condition could happen because -@@ -226,7 +229,7 @@ let perform_io ch = match ch.main.state with - | Invalid -> - raise_lwt (invalid_channel ch) - -- | Idle -> -+ | Idle | Waiting_for_busy -> - assert false - - let refill = perform_io -@@ -259,7 +262,7 @@ let auto_flush oc = - lwt () = Lwt.pause () in - let wrapper = deepest_wrapper oc in - match wrapper.state with -- | Busy_primitive -> -+ | Busy_primitive | Waiting_for_busy -> - (* The channel is used, cancel auto flushing. It will be - restarted when the channel returns to the [Idle] state: *) - oc.auto_flushing <- false; -@@ -287,9 +290,12 @@ let auto_flush oc = - - let unlock wrapper = match wrapper.state with - | Busy_primitive | Busy_atomic _ -> -- wrapper.state <- Idle; -- if not (Lwt_sequence.is_empty wrapper.queued) then -- wakeup_later (Lwt_sequence.take_l wrapper.queued) (); -+ if Lwt_sequence.is_empty wrapper.queued then -+ wrapper.state <- Idle -+ else begin -+ wrapper.state <- Waiting_for_busy; -+ wakeup_later (Lwt_sequence.take_l wrapper.queued) () -+ end; - (* Launches the auto-flusher: *) - let ch = wrapper.channel in - if (* Launch the auto-flusher only if the channel is not busy: *) -@@ -309,7 +315,7 @@ let unlock wrapper = match wrapper.state with - if not (Lwt_sequence.is_empty wrapper.queued) then - wakeup_later (Lwt_sequence.take_l wrapper.queued) () - -- | Idle -> -+ | Idle | Waiting_for_busy -> - (* We must never unlock an unlocked channel *) - assert false - -@@ -323,7 +329,7 @@ let primitive f wrapper = match wrapper.state with - unlock wrapper; - return () - -- | Busy_primitive | Busy_atomic _ -> -+ | Busy_primitive | Busy_atomic _ | Waiting_for_busy -> - let (res, w) = task () in - let node = Lwt_sequence.add_r w wrapper.queued in - Lwt.on_cancel res (fun _ -> Lwt_sequence.remove node); -@@ -334,7 +340,7 @@ let primitive f wrapper = match wrapper.state with - unlock wrapper; - raise_lwt (closed_channel wrapper.channel) - -- | Idle -> -+ | Idle | Waiting_for_busy -> - wrapper.state <- Busy_primitive; - try_lwt - f wrapper.channel -@@ -370,7 +376,7 @@ let atomic f wrapper = match wrapper.state with - unlock wrapper; - return () - -- | Busy_primitive | Busy_atomic _ -> -+ | Busy_primitive | Busy_atomic _ | Waiting_for_busy -> - let (res, w) = task () in - let node = Lwt_sequence.add_r w wrapper.queued in - Lwt.on_cancel res (fun _ -> Lwt_sequence.remove node); -@@ -381,7 +387,7 @@ let atomic f wrapper = match wrapper.state with - unlock wrapper; - raise_lwt (closed_channel wrapper.channel) - -- | Idle -> -+ | Idle | Waiting_for_busy -> - let tmp_wrapper = { state = Idle; - channel = wrapper.channel; - queued = Lwt_sequence.create () } in -@@ -415,7 +421,7 @@ let rec abort wrapper = match wrapper.state with - Lazy.force wrapper.channel.close - | Invalid -> - raise_lwt (invalid_channel wrapper.channel) -- | Idle | Busy_primitive -> -+ | Idle | Busy_primitive | Waiting_for_busy -> - wrapper.state <- Closed; - (* Abort any current real reading/writing operation on the - channel: *) --- diff --git a/debian/patches/0003-fix-data-corruption-in-Lwt_io.patch b/debian/patches/0003-fix-data-corruption-in-Lwt_io.patch deleted file mode 100644 index 041d278..0000000 --- a/debian/patches/0003-fix-data-corruption-in-Lwt_io.patch +++ /dev/null @@ -1,23 +0,0 @@ -From: Pierre Chambart <chamb...@crans.org> -Date: Thu, 28 Jul 2011 13:25:03 +0200 -Subject: fix data corruption in Lwt_io. - -Origin: http://ocsigen.org/darcsweb/?r=lwt;a=commit;h=20110728095212-0cb73-a111bbba9fba3d4be6c0585ff823c41417f02570.gz ---- - src/unix/lwt_unix_stubs.c | 2 +- - 1 files changed, 1 insertions(+), 1 deletions(-) - -diff --git a/src/unix/lwt_unix_stubs.c b/src/unix/lwt_unix_stubs.c -index e40196c..1adbaea 100644 ---- a/src/unix/lwt_unix_stubs.c -+++ b/src/unix/lwt_unix_stubs.c -@@ -126,7 +126,7 @@ void lwt_unix_not_available(char const *feature) - - CAMLprim value lwt_unix_blit_bytes_bytes(value val_buf1, value val_ofs1, value val_buf2, value val_ofs2, value val_len) - { -- memcpy((char*)Caml_ba_data_val(val_buf2) + Long_val(val_ofs2), -+ memmove((char*)Caml_ba_data_val(val_buf2) + Long_val(val_ofs2), - (char*)Caml_ba_data_val(val_buf1) + Long_val(val_ofs1), - Long_val(val_len)); - return Val_unit; --- diff --git a/debian/patches/series b/debian/patches/series index 3261106..97db22b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1 @@ 0001-Do-not-build-manual-manual.pdf.patch -0002-fix-a-race-condition-in-Lwt_io.patch -0003-fix-data-corruption-in-Lwt_io.patch -- Cooperative light-weight thread library for OCaml _______________________________________________ Pkg-ocaml-maint-commits mailing list Pkg-ocaml-maint-commits@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-ocaml-maint-commits