From d17f69211ebb6cad8f6e412c893d6ac2d88f11c1 Mon Sep 17 00:00:00 2001 From: Shachar Itzhaky Date: Wed, 24 Apr 2019 23:21:17 +0300 Subject: [PATCH] Runtime: flush output buffer before accessing offset. Fixes #777. --- runtime/io.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/runtime/io.js b/runtime/io.js index 8a972a5be6..c8e9390d65 100644 --- a/runtime/io.js +++ b/runtime/io.js @@ -394,26 +394,32 @@ function caml_output_value (chanid,v,_flags) { //Provides: caml_ml_seek_out -//Requires: caml_ml_channels +//Requires: caml_ml_channels, caml_ml_flush function caml_ml_seek_out(chanid,pos){ + caml_ml_flush(chanid); caml_ml_channels[chanid].offset = pos; return 0; } //Provides: caml_ml_seek_out_64 -//Requires: caml_int64_to_float, caml_ml_channels +//Requires: caml_int64_to_float, caml_ml_channels, caml_ml_flush function caml_ml_seek_out_64(chanid,pos){ + caml_ml_flush(chanid); caml_ml_channels[chanid].offset = caml_int64_to_float(pos); return 0; } //Provides: caml_ml_pos_out -//Requires: caml_ml_channels -function caml_ml_pos_out(chanid) {return caml_ml_channels[chanid].offset} +//Requires: caml_ml_channels, caml_ml_flush +function caml_ml_pos_out(chanid) { + caml_ml_flush(chanid); + return caml_ml_channels[chanid].offset; +} //Provides: caml_ml_pos_out_64 -//Requires: caml_int64_of_float, caml_ml_channels +//Requires: caml_int64_of_float, caml_ml_channels, caml_ml_flush function caml_ml_pos_out_64(chanid) { + caml_ml_flush(chanid); return caml_int64_of_float (caml_ml_channels[chanid].offset); }