summaryrefslogtreecommitdiffstats
path: root/manager.cpp
diff options
context:
space:
mode:
authorKun Yi <kunyi731@gmail.com>2019-11-22 14:59:40 -0800
committerKun Yi <kunyi731@gmail.com>2019-11-25 10:06:06 -0800
commitcd833aa11075ac1041531270060e1fb3ba8aa5ac (patch)
treef416d4c5fbf8e0d5cdc5993561ab0c253c9c7598 /manager.cpp
parentfea1d8115bace4bedae2523a9d9389a990adb09f (diff)
downloadphosphor-ipmi-blobs-cd833aa11075ac1041531270060e1fb3ba8aa5ac.tar.gz
phosphor-ipmi-blobs-cd833aa11075ac1041531270060e1fb3ba8aa5ac.zip
Fix openFiles refcount
The old code deletes session from the session map before doing a lookup of the path. Fix the order and add a unit test to catch the error case. (The unit test would fail without this fix). Signed-off-by: Kun Yi <kunyi731@gmail.com> Change-Id: If043d6aad7bbaafa19ae3b63a6d9cc7a836d25b5
Diffstat (limited to 'manager.cpp')
-rw-r--r--manager.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/manager.cpp b/manager.cpp
index 0eec6f2..870bf60 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -27,7 +27,6 @@ namespace blobs
void BlobManager::eraseSession(GenericBlobInterface* handler, uint16_t session)
{
- sessions.erase(session);
/* Ok for openSessions[handler] to be an empty set */
openSessions[handler].erase(session);
@@ -37,6 +36,8 @@ void BlobManager::eraseSession(GenericBlobInterface* handler, uint16_t session)
{
openFiles.erase(path);
}
+ /* Cannot erase before getPath() is called */
+ sessions.erase(session);
}
void BlobManager::cleanUpStaleSessions(GenericBlobInterface* handler)
OpenPOWER on IntegriCloud