X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..ce3c8656732c924baf7e88df75eab50891bdc471:/OSX/libsecurity_filedb/lib/AtomicFile.cpp diff --git a/OSX/libsecurity_filedb/lib/AtomicFile.cpp b/OSX/libsecurity_filedb/lib/AtomicFile.cpp index 68049c24..60c98f46 100644 --- a/OSX/libsecurity_filedb/lib/AtomicFile.cpp +++ b/OSX/libsecurity_filedb/lib/AtomicFile.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #define kAtomicFileMaxBlockSize INT_MAX @@ -389,7 +390,9 @@ AtomicBufferedFile::~AtomicBufferedFile() { if (mFileRef >= 0) { - AtomicFile::rclose(mFileRef); + // In release mode, the assert() is compiled out so rv may be unused. + __unused int rv = AtomicFile::rclose(mFileRef); + assert(rv == 0); secdebug("atomicfile", "%p closed %s", this, mPath.c_str()); } @@ -440,6 +443,7 @@ AtomicBufferedFile::open() int error = errno; secdebug("atomicfile", "lseek(%s, END): %s", path, strerror(error)); AtomicFile::rclose(mFileRef); + mFileRef = -1; UnixError::throwMe(error); } @@ -488,7 +492,10 @@ AtomicBufferedFile::loadBuffer() { int error = errno; secdebug("atomicfile", "lseek(%s, END): %s", mPath.c_str(), strerror(error)); - AtomicFile::rclose(mFileRef); + if (mFileRef >= 0) { + AtomicFile::rclose(mFileRef); + mFileRef = -1; + } UnixError::throwMe(error); } } @@ -507,7 +514,10 @@ AtomicBufferedFile::loadBuffer() { int error = errno; secdebug("atomicfile", "lseek(%s, END): %s", mPath.c_str(), strerror(error)); - AtomicFile::rclose(mFileRef); + if (mFileRef >= 0) { + AtomicFile::rclose(mFileRef); + mFileRef = -1; + } UnixError::throwMe(error); } }