From 6f01cc89c61c3147ea0b48e27aa7cfda820a6c5f Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Wed, 1 Apr 2009 15:21:42 +0200 Subject: [PATCH] Files opened with :overwrite or :append were truncated. --- src/c/file.d | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/c/file.d b/src/c/file.d index 282935a81..7b16a7ba7 100644 --- a/src/c/file.d +++ b/src/c/file.d @@ -4172,10 +4172,14 @@ ecl_open_stream(cl_object fn, enum ecl_smmode smm, cl_object if_exists, if (flags & ECL_STREAM_C_STREAM) { FILE *fp; close(f); + /* We do not use fdopen() because Windows seems to + * have problems with the resulting streams. Furthermore, even for + * output we open with w+ because we do not want to + * overwrite the file. */ switch (smm) { case smm_probe: case smm_input: fp = fopen(fname, OPEN_R); break; - case smm_output: fp = fopen(fname, OPEN_W); break; + case smm_output: case smm_io: fp = fopen(fname, OPEN_RW); break; } x = ecl_make_stream_from_FILE(fn, fp, smm, byte_size, flags,