[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)
committerHyunjin Park <hj.na.park@samsung.com>
Tue, 2 Jun 2015 05:44:55 +0000 (14:44 +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 789b18a816e2e450e105eea568bb838ae2d84847..4f8d33b142f00e78883102aa2c2846b9b73a02fe 100755 (executable)
@@ -503,14 +503,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);
 }