[Archive] Reorganized the code to protect from dereferencing null.
authorPawel Andruszkiewicz <p.andruszkie@samsung.com>
Wed, 3 Jun 2015 12:53:47 +0000 (14:53 +0200)
committerPawel Andruszkiewicz <p.andruszkie@samsung.com>
Wed, 3 Jun 2015 12:53:47 +0000 (14:53 +0200)
Prevent CID: 386876

[Verification] TCT pass rate: 100%.

Change-Id: Ieb3e7eb1b8d97e986cc6d750ea526996f9584a05
Signed-off-by: Pawel Andruszkiewicz <p.andruszkie@samsung.com>
src/archive/archive_file.cc

index cb5684172e540edcf0715690872827ed80639ac2..e1f6756f29b4ac08e9a76950d82ef205bfa89fe8 100755 (executable)
@@ -204,21 +204,23 @@ void* ArchiveFile::taskManagerThread(void *data)
             callback = archive_file_holder->ptr->m_task_queue.back().second;
         }
 
-        if(callback && !callback->isCanceled()){
-            result = callback->executeOperation(archive_file_holder->ptr);
-        }
+        if (callback) {
+            if (!callback->isCanceled()){
+                result = callback->executeOperation(archive_file_holder->ptr);
+            }
 
-        if (ErrorCode::OPERATION_CANCELED_ERR == result.error_code()) {
-            delete callback;
-            callback = NULL;
-        } else if (ErrorCode::NO_ERROR != result.error_code()) {
-            LoggerE("taskManagerThread fails, %d: %s", result.error_code(),
-                    result.message().c_str());
-            callback->setError(result.error_code(), result.message().c_str());
-            if (!g_idle_add(callErrorCallback, static_cast<void*>(callback))) {
-                LoggerE("g_idle_add fails");
+            if (ErrorCode::OPERATION_CANCELED_ERR == result.error_code()) {
                 delete callback;
                 callback = NULL;
+            } else if (ErrorCode::NO_ERROR != result.error_code()) {
+                LoggerE("taskManagerThread fails, %d: %s", result.error_code(),
+                        result.message().c_str());
+                callback->setError(result.error_code(), result.message().c_str());
+                if (!g_idle_add(callErrorCallback, static_cast<void*>(callback))) {
+                    LoggerE("g_idle_add fails");
+                    delete callback;
+                    callback = NULL;
+                }
             }
         }