auto BufferedFile keeps file locked
Lionello Lunesu
lio at lunesu.remove.com
Fri Apr 21 05:51:54 PDT 2006
Hi,
Been playing around with the stream classes in Phobos some more and I've
noticed the following:
#void bla( char[] fn ) {
# auto BufferedFile bf = new BufferedFile;
# bf.open(fn);
#}
After calling the function "bla", the opened file remains locked. Adding
"bf.close" at the end of the function correctly closes the file and does
not keep the file locked. Using "File" instead of "BufferedFile" also
solves the problem.
After thinking about it for half an hour I finally got it: the
BufferedFile, which had a reference to a File instance, got destructed
like it should but the File's not being collected together with the
BufferedFile.
It seems the File instance inside BufferedFile should be linked somehow
to the BufferedFile instance.
Would adding a destructor to BufferedFile solve the problem?
#class BufferedFile: BufferedStream {
#
# // opens file for reading
# this() { super(new File()); }
# ~this() { close(); }
...
L.
PS. Who else thinks it should be "BufferFile" (and not "BufferedFile";
(analogous to "FilterStream" and not "FilteredStream")?
More information about the Digitalmars-d-learn
mailing list