diff --git a/include/normObject.h b/include/normObject.h index affedbf..5b22945 100755 --- a/include/normObject.h +++ b/include/normObject.h @@ -361,6 +361,7 @@ class NormFileObject : public NormObject const char* infoPtr = NULL, UINT16 infoLen = 0); bool Accept(const char* thePath); + void CloseFile(); void Close(); const char* GetPath() {return path;} diff --git a/src/common/normObject.cpp b/src/common/normObject.cpp index ad59bb7..600d168 100755 --- a/src/common/normObject.cpp +++ b/src/common/normObject.cpp @@ -2395,7 +2395,7 @@ bool NormFileObject::Accept(const char* thePath) } } // end NormFileObject::Accept() -void NormFileObject::Close() +void NormFileObject::CloseFile() { if (file.IsOpen()) { @@ -2403,6 +2403,11 @@ void NormFileObject::Close() file.Unlock(); file.Close(); } +} // end NormFileObject::CloseFile() + +void NormFileObject::Close() +{ + CloseFile(); NormObject::Close(); } // end NormFileObject::Close() diff --git a/src/common/normSession.cpp b/src/common/normSession.cpp index 6a9104d..294b501 100755 --- a/src/common/normSession.cpp +++ b/src/common/normSession.cpp @@ -2132,6 +2132,8 @@ void NormSession::DeleteTxObject(NormObject *obj, bool notify) ASSERT(NULL != obj); if (tx_table.Remove(obj)) { + if (NormObject::FILE == obj->GetType()) + static_cast(obj)->CloseFile(); Notify(NormController::TX_OBJECT_PURGED, (NormSenderNode *)NULL, obj); NormObjectId objectId = obj->GetId(); tx_pending_mask.Unset(objectId);