Call callbacks only when callable on async client 30/73730/1
authorKyungwook Tak <k.tak@samsung.com>
Thu, 9 Jun 2016 09:06:59 +0000 (18:06 +0900)
committerKyungwook Tak <k.tak@samsung.com>
Thu, 9 Jun 2016 09:06:59 +0000 (18:06 +0900)
Change-Id: Iadb78263064e8ef71cccfebf607a55341275d06e
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
src/framework/client/async-logic.cpp
src/framework/client/utils.cpp

index 4662e9e..e66c265 100644 (file)
@@ -123,13 +123,13 @@ void AsyncLogic::scanFiles(const StrSet &fileSet)
                        INFO("[Detected] file[" << file << "]");
                        this->m_results.emplace_back(std::move(resultPtr));
 
-                       if (this->m_cb.onDetected)
+                       if (this->m_cb.onDetected != nullptr)
                                this->m_cb.onDetected(reinterpret_cast<csr_cs_malware_h>(ret.second),
                                                                          this->m_userdata);
                } else {
                        DEBUG("[Scanned] file[" << file << "]");
 
-                       if (this->m_cb.onScanned)
+                       if (this->m_cb.onScanned != nullptr)
                                this->m_cb.onScanned(file.c_str(), this->m_userdata);
                }
        }
index ac1915f..e3ddf5d 100644 (file)
@@ -63,27 +63,34 @@ void exceptionGuardAsync(const Callback &callbacks, void *userdata,
 {
        try {
                func();
-               callbacks.onCompleted(userdata);
+               if (callbacks.onCompleted != nullptr)
+                       callbacks.onCompleted(userdata);
        } catch (const Exception &e) {
                if (e.error() == -999) {
                        INFO("Async operation cancel exception!");
-                       callbacks.onCancelled(userdata);
+                       if (callbacks.onCancelled != nullptr)
+                               callbacks.onCancelled(userdata);
                } else {
                        ERROR("Exception caught. code: " << e.error() << " message: " << e.what());
-                       callbacks.onError(e.error(), userdata);
+                       if (callbacks.onError != nullptr)
+                               callbacks.onError(e.error(), userdata);
                }
        } catch (const std::invalid_argument &e) {
                ERROR("invalid argument: " << e.what());
-               callbacks.onError(CSR_ERROR_INVALID_PARAMETER, userdata);
+               if (callbacks.onError != nullptr)
+                       callbacks.onError(CSR_ERROR_INVALID_PARAMETER, userdata);
        } catch (const std::bad_alloc &e) {
                ERROR("memory allocation failed: " << e.what());
-               callbacks.onError(CSR_ERROR_OUT_OF_MEMORY, userdata);
+               if (callbacks.onError != nullptr)
+                       callbacks.onError(CSR_ERROR_OUT_OF_MEMORY, userdata);
        } catch (const std::exception &e) {
                ERROR("std exception: " << e.what());
-               callbacks.onError(CSR_ERROR_SYSTEM, userdata);
+               if (callbacks.onError != nullptr)
+                       callbacks.onError(CSR_ERROR_SYSTEM, userdata);
        } catch (...) {
                ERROR("Unknown exception occured!");
-               callbacks.onError(CSR_ERROR_SYSTEM, userdata);
+               if (callbacks.onError != nullptr)
+                       callbacks.onError(CSR_ERROR_SYSTEM, userdata);
        }
 }