Prevent uncaught exceptions from ctx_sensor_rec_read & ctx_sensor_rec_read_sync 62/136462/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Fri, 30 Jun 2017 01:28:40 +0000 (10:28 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Fri, 30 Jun 2017 01:28:40 +0000 (10:28 +0900)
Change-Id: I6f6402d0cdb98fe418a2fb5220d27d5cf49ce974
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/client/sensor_recorder.cpp

index e599b34..86c64c9 100644 (file)
@@ -161,10 +161,12 @@ EXPORT_API int ctx_sensor_rec_read(const char* subject, ctx_sensor_rec_query_h q
 {
        IF_FAIL_RETURN(subject && query && cb, E_PARAM);
 
+       QueryResultListener* listener = new(std::nothrow) QueryResultListener(subject, cb, user_data);
+       IF_FAIL_RETURN_TAG(listener, E_NO_MEM, _E, E_STR_ALLOC);
+
        std::string queryStr = __mapToJson(*static_cast<ctx_sensor_rec_query_t*>(query));
        GVariant* param = g_variant_new("(ss)", subject, queryStr.c_str());
 
-       QueryResultListener* listener = new QueryResultListener(subject, cb, user_data);
        int error = __getServiceProxy()->call(METHOD_READ_REC, param, listener);
 
        if (error != E_NONE)
@@ -177,6 +179,9 @@ EXPORT_API int ctx_sensor_rec_read_sync(const char* subject, ctx_sensor_rec_quer
 {
        IF_FAIL_RETURN(subject && query && cb, E_PARAM);
 
+       QueryResultListener* listener = new(std::nothrow) QueryResultListener(subject, cb, user_data);
+       IF_FAIL_RETURN_TAG(listener, E_NO_MEM, _E, E_STR_ALLOC);
+
        std::string queryStr = __mapToJson(*static_cast<ctx_sensor_rec_query_t*>(query));
        GVariant* param = g_variant_new("(ss)", subject, queryStr.c_str());
 
@@ -184,7 +189,6 @@ EXPORT_API int ctx_sensor_rec_read_sync(const char* subject, ctx_sensor_rec_quer
        int error = __getServiceProxy()->call(METHOD_READ_REC, param, &outParam);
        IF_FAIL_RETURN(error == E_NONE, error);
 
-       QueryResultListener* listener = new QueryResultListener(subject, cb, user_data);
        listener->onSuccess(METHOD_READ_REC, outParam);
 
        g_variant_unref(outParam);