You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Original bug ID: 3879 Reporter: Jean-Marc Eber Status: closed (set by @damiendoligez on 2005-11-22T11:51:42Z) Resolution: fixed Priority: normal Severity: crash Category: ~DO NOT USE (was: OCaml general)
Bug description
Bonjour,
Marshal.to_buffer ne fonctionne pas sous 3090. Comme nous venons de migrer de 3081, je ne sais pas exactement quand est apparu le pb (3082 ? 3083 ?...).
Le programme suivant, compilé avec ocamlc ou ocamlopt, "plante" (tant sous linux que windows), selon que l'on commente le Marshal.to_string ou non.
J'ai évidemment pensé trouver un bug trivial dans extern.c, mais ce n'est pas si simple...
Jean-Marc
let buffer = String.create 1000
(* ça "plante" si je décommente...
let _ = Marshal.to_string () [Marshal.No_sharing]
*)
let test v =
Marshal.to_buffer buffer 0 999 v [Marshal.No_sharing]
let _ = print_int (test (Some 23))
Additional information
fixed by DD 2005-11-22
The text was updated successfully, but these errors were encountered:
Il faut lire:
ça "plante" si je commente... (au lieu de décommente)
En fait, en l'absence de Marshal.to_string précédant le to_buffer, ce dernier provoque un core dump ou access violation car manipule, je crois, un pointeur non initialisé dans extern.c.
Il me semble que le patch suivant règle le pb, sans que je sois sûr que cela "suffise":
Original bug ID: 3879
Reporter: Jean-Marc Eber
Status: closed (set by @damiendoligez on 2005-11-22T11:51:42Z)
Resolution: fixed
Priority: normal
Severity: crash
Category: ~DO NOT USE (was: OCaml general)
Bug description
Bonjour,
Marshal.to_buffer ne fonctionne pas sous 3090. Comme nous venons de migrer de 3081, je ne sais pas exactement quand est apparu le pb (3082 ? 3083 ?...).
Le programme suivant, compilé avec ocamlc ou ocamlopt, "plante" (tant sous linux que windows), selon que l'on commente le Marshal.to_string ou non.
J'ai évidemment pensé trouver un bug trivial dans extern.c, mais ce n'est pas si simple...
Jean-Marc
let buffer = String.create 1000
(* ça "plante" si je décommente...
let _ = Marshal.to_string () [Marshal.No_sharing]
*)
let test v =
Marshal.to_buffer buffer 0 999 v [Marshal.No_sharing]
let _ = print_int (test (Some 23))
Additional information
fixed by DD 2005-11-22
The text was updated successfully, but these errors were encountered: