flush() bug?

new topic     » topic index » view thread      » older message » newer message

Using the following program with exw.exe:


-----------------------------
include file.e
include get.e

integer fn

fn = open("test.txt","w")
puts(fn,"Hello")
close(fn)

? gets(0)

-------------------------------------------
The file "test.txt" is created and the console hangs until you hit enter.  So
far so good.  The file test.txt should be "unlocked" (because we close()'d it)
and it is -- I can move it, rename, etc with the console still open (so the
program hasn't terminated.)

If we change the middle section to:

-------------
fn = open("test.txt","w")
puts(fn,"Hello")
flush(fn)
close(fn)

-------------

It also works the same way, as expected.

However, if we do this:

--------------
fn = open("test.txt","w")
puts(fn,"Hello")
flush(fn)
puts(fn,"Hello")
close(fn)
--------------

The file test.txt now stays locked even though it has been closed -- it won't
release until we terminate the program.  In other words, if we use flush() at any
point, and then write data to the file after the flush() and then close(), the
file stays locked.

The fix:

--------------

fn = open("test.txt","w")
puts(fn,"Hello")
flush(fn)
puts(fn,"Hello")
flush(fn)
close(fn)

--------------

We have to add an extra flush() before the close() to get it to release.  An
easy fix, but still the behavior is not correct unless I'm missing something...

new topic     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu