diff options
author | Philip Kaufmann <phil.kaufmann@t-online.de> | 2014-09-29 16:10:29 +0200 |
---|---|---|
committer | Philip Kaufmann <phil.kaufmann@t-online.de> | 2014-10-02 10:56:10 +0200 |
commit | 0c35486dc97909cea67b24e8758bd0f40ac33a9a (patch) | |
tree | 779e3ec48784f959197a230d0bd6c198f79acdfb /src/serialize.h | |
parent | c9fb27da0a72135417956dca8dafa959ebb67c10 (diff) |
CBufferedFile: add explicit close function
- also use identical close function for CAutoFile (avoids setting file to
NULL under wrong conditions)
Diffstat (limited to 'src/serialize.h')
-rw-r--r-- | src/serialize.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/serialize.h b/src/serialize.h index f56dce1481..63c72cb8e8 100644 --- a/src/serialize.h +++ b/src/serialize.h @@ -1154,7 +1154,7 @@ public: -/** Non-refcounted RAII wrapper for FILE*. +/** Non-refcounted RAII wrapper for FILE* * * Will automatically close the file when it goes out of scope if not null. * If you're returning the file pointer, return file.release(). @@ -1186,9 +1186,10 @@ public: void fclose() { - if (file != NULL && file != stdin && file != stdout && file != stderr) + if (file) { ::fclose(file); - file = NULL; + file = NULL; + } } FILE* release() { FILE* ret = file; file = NULL; return ret; } @@ -1257,7 +1258,11 @@ public: }; /** Non-refcounted RAII wrapper around a FILE* that implements a ring buffer to - * deserialize from. It guarantees the ability to rewind a given number of bytes. */ + * deserialize from. It guarantees the ability to rewind a given number of bytes. + * + * Will automatically close the file when it goes out of scope if not null. + * If you need to close the file early, use file.fclose() instead of fclose(file). + */ class CBufferedFile { private: @@ -1305,8 +1310,15 @@ public: ~CBufferedFile() { - if (src) - fclose(src); + fclose(); + } + + void fclose() + { + if (src) { + ::fclose(src); + src = NULL; + } } // check whether we're at the end of the source file |