[Archive] Fixed close method in case of closed file
authorPiotr Kosko <p.kosko@samsung.com>
Thu, 28 May 2015 11:03:04 +0000 (13:03 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Thu, 28 May 2015 11:13:31 +0000 (20:13 +0900)
[Bug] In case of closed archive, method would be called on null priv object.

[Verification] code compiles without errors.
  TCT passrate 100%.

Change-Id: I5b02d020c6d6fa3d5dc55fa61c8492da1ab7e8a1
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
src/archive/archive_instance.cc

index e0ab156808f2c120556403b6966b33a23378c471..712d14b9de0ea79ea59e63c7dda6ff5c56f46204 100644 (file)
@@ -491,14 +491,14 @@ void ArchiveInstance::Close(const picojson::value& args, picojson::object& out)
 
     ArchiveFilePtr priv;
     PlatformResult result = ArchiveManager::getInstance().getPrivData(handle, &priv);
-    if (result.error_code() != ErrorCode::NO_ERROR) {
-        LoggerD("Close method was called on already closed archive. Just end execution");
-        LoggerD("%s", result.message().c_str());
+    if (result.error_code() == ErrorCode::NO_ERROR) {
+      priv->close();
+      ArchiveManager::getInstance().erasePrivData(handle);
+    } else {
+      LoggerD("Close method was called on already closed archive. Just end execution");
+      LoggerD("%s", result.message().c_str());
     }
 
-    priv->close();
-    ArchiveManager::getInstance().erasePrivData(handle);
-
     ReportSuccess(out);
 }