ret = LB_STATUS_ERROR_INVALID;
}
- if (cb)
+ if (cb) {
cb(handler, ret, cbdata);
+ }
return;
}
goto errout;
}
- if (ret < 0)
+ if (ret < 0) {
goto errout;
+ }
return;
goto errout;
}
- if (ret < 0)
+ if (ret < 0) {
goto errout;
+ }
return;
ret = LB_STATUS_ERROR_INVALID;
}
- if (cb)
+ if (cb) {
cb(handler, ret, cbdata);
+ }
}
static void pd_destroy_cb(struct livebox *handler, const struct packet *result, void *data)
ret = LB_STATUS_ERROR_INVALID;
}
- if (cb)
+ if (cb) {
cb(handler, ret, cbdata);
+ }
}
static void delete_category_cb(struct livebox *handler, const struct packet *result, void *data)
cbdata = info->data;
destroy_cb_info(info);
- if (!result)
+ if (!result) {
ret = LB_STATUS_ERROR_FAULT;
- else if (packet_get(result, "i", &ret) != 1)
+ } else if (packet_get(result, "i", &ret) != 1) {
ret = LB_STATUS_ERROR_INVALID;
+ }
- if (cb)
+ if (cb) {
cb(handler, ret, cbdata);
+ }
}
-static void pixmap_acquired_cb(struct livebox *handler, const struct packet *result, void *data)
+static void lb_pixmap_acquired_cb(struct livebox *handler, const struct packet *result, void *data)
{
+ int pixmap;
int ret;
ret_cb_t cb;
void *cbdata;
cbdata = info->data;
destroy_cb_info(info);
- if (!result)
- ret = 0; /* PIXMAP 0 means error */
- else if (packet_get(result, "i", &ret) != 1)
- ret = 0;
+ if (!result) {
+ pixmap = 0; /* PIXMAP 0 means error */
+ } else if (packet_get(result, "ii", &pixmap, &ret) != 2) {
+ pixmap = 0;
+ }
- if (cb)
- cb(handler, ret, cbdata);
+ if (ret == LB_STATUS_ERROR_BUSY) {
+ ret = livebox_acquire_lb_pixmap(handler, cb, cbdata);
+ DbgPrint("Busy, Try again: %d\n", ret);
+ /* Try again */
+ } else {
+ if (cb) {
+ cb(handler, pixmap, cbdata);
+ }
+ }
+}
+
+static void pd_pixmap_acquired_cb(struct livebox *handler, const struct packet *result, void *data)
+{
+ int pixmap;
+ int ret;
+ ret_cb_t cb;
+ void *cbdata;
+ struct cb_info *info = data;
+
+ cb = info->cb;
+ cbdata = info->data;
+ destroy_cb_info(info);
+
+ if (!result) {
+ pixmap = 0; /* PIXMAP 0 means error */
+ ret = LB_STATUS_ERROR_FAULT;
+ } else if (packet_get(result, "ii", &pixmap, &ret) != 2) {
+ pixmap = 0;
+ ret = LB_STATUS_ERROR_INVALID;
+ }
+
+ if (ret == LB_STATUS_ERROR_BUSY) {
+ ret = livebox_acquire_pd_pixmap(handler, cb, cbdata);
+ DbgPrint("Busy, Try again: %d\n", ret);
+ /* Try again */
+ } else {
+ if (cb) {
+ DbgPrint("ret: %d, pixmap: %d\n", ret, pixmap);
+ cb(handler, pixmap, cbdata);
+ }
+ }
}
static void pinup_done_cb(struct livebox *handler, const struct packet *result, void *data)
goto errout;
}
- if (ret < 0)
+ if (ret < 0) {
goto errout;
+ }
return;
return LB_STATUS_SUCCESS;
}
env = getenv("PROVIDER_DISABLE_PREVENT_OVERWRITE");
- if (env && !strcasecmp(env, "true"))
+ if (env && !strcasecmp(env, "true")) {
s_info.prevent_overwrite = 1;
+ }
env = getenv("PROVIDER_EVENT_FILTER");
- if (env)
+ if (env) {
sscanf(env, "%lf", &MINIMUM_EVENT);
+ }
#if defined(FLOG)
char filename[BUFSIZ];
snprintf(filename, sizeof(filename), "/tmp/%d.box.log", getpid());
__file_log_fp = fopen(filename, "w+t");
- if (!__file_log_fp)
+ if (!__file_log_fp) {
__file_log_fp = fdopen(1, "w+t");
+ }
#endif
critical_log_init("viewer");
livebox_service_init();
lb = livebox_service_pkgname(pkgname);
if (!lb) {
- if (util_validate_livebox_package(pkgname) == 0)
+ if (util_validate_livebox_package(pkgname) == 0) {
return strdup(pkgname);
+ }
}
return lb;
return NULL;
}
- if (type != LB_SIZE_TYPE_UNKNOWN)
+ if (type != LB_SIZE_TYPE_UNKNOWN) {
livebox_service_get_size(type, &width, &height);
+ }
handler = calloc(1, sizeof(*handler));
if (!handler) {
return NULL;
}
- if (!cb)
+ if (!cb) {
cb = default_create_cb;
+ }
/* Data provider will set this */
handler->lb.type = _LB_TYPE_FILE;
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_period_changed_cb;
+ }
ret = master_rpc_async_request(handler, packet, 0, period_ret_cb, NULL);
if (ret == LB_STATUS_SUCCESS) {
* By the way, if the user adds any callback for getting return status of this,
* call it at here.
*/
- if (cb)
+ if (cb) {
cb(handler, 0, data);
+ }
return LB_STATUS_SUCCESS;
}
- if (!cb)
+ if (!cb) {
cb = default_delete_cb;
+ }
return lb_send_delete(handler, cb, data);
}
{
struct fault_info *info;
- if (!cb)
+ if (!cb) {
return LB_STATUS_ERROR_INVALID;
+ }
info = malloc(sizeof(*info));
if (!info) {
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_STATUS_ERROR_INVALID;
+ }
if (handler->update_mode_cb) {
ErrPrint("Previous update_mode cb is not finished yet\n");
return LB_STATUS_ERROR_BUSY;
}
- if (handler->is_active_update == active_update)
+ if (handler->is_active_update == active_update) {
return LB_STATUS_ERROR_ALREADY;
+ }
- if (!handler->is_user)
+ if (!handler->is_user) {
return LB_STATUS_ERROR_PERMISSION;
+ }
packet = packet_create("update_mode", "ssi", handler->pkgname, handler->id, active_update);
- if (!packet)
+ if (!packet) {
return LB_STATUS_ERROR_FAULT;
+ }
- if (!cb)
+ if (!cb) {
cb = default_update_mode_cb;
+ }
ret = master_rpc_async_request(handler, packet, 0, update_mode_cb, NULL);
if (ret == LB_STATUS_SUCCESS) {
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_STATUS_ERROR_INVALID;
+ }
return handler->is_active_update;
}
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_lb_size_changed_cb;
+ }
ret = master_rpc_async_request(handler, packet, 0, resize_cb, NULL);
if (ret == LB_STATUS_SUCCESS) {
if (handler->lb.auto_launch) {
DbgPrint("AUTO_LAUNCH [%s]\n", handler->lb.auto_launch);
- if (aul_launch_app(handler->lb.auto_launch, NULL) < 0)
+ if (aul_launch_app(handler->lb.auto_launch, NULL) < 0) {
ErrPrint("Failed to launch app %s\n", handler->lb.auto_launch);
+ }
}
packet = packet_create_noack("clicked", "sssddd", handler->pkgname, handler->id, "clicked", timestamp, x, y);
if (!handler->lb.mouse_event && (handler->lb.type == _LB_TYPE_BUFFER || handler->lb.type == _LB_TYPE_SCRIPT)) {
int ret; /* Shadow variable */
ret = send_mouse_event(handler, "lb_mouse_down", x * handler->lb.width, y * handler->lb.height);
- if (ret < 0)
+ if (ret < 0) {
ErrPrint("Failed to send Down: %d\n", ret);
+ }
ret = send_mouse_event(handler, "lb_mouse_move", x * handler->lb.width, y * handler->lb.height);
- if (ret < 0)
+ if (ret < 0) {
ErrPrint("Failed to send Move: %d\n", ret);
+ }
ret = send_mouse_event(handler, "lb_mouse_up", x * handler->lb.width, y * handler->lb.height);
- if (ret < 0)
+ if (ret < 0) {
ErrPrint("Failed to send Up: %d\n", ret);
+ }
}
return ret;
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_pd_created_cb;
+ }
DbgPrint("PERF_DBOX\n");
ret = master_rpc_async_request(handler, packet, 0, pd_create_cb, NULL);
struct cb_info *cbinfo;
int ret;
- if (!pkgname)
+ if (!pkgname) {
return LB_STATUS_ERROR_INVALID;
+ }
packet = packet_create("activate_package", "s", pkgname);
if (!packet) {
}
ret = master_rpc_async_request(NULL, packet, 0, activated_cb, cbinfo);
- if (ret < 0)
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_pd_destroyed_cb;
+ }
cbinfo = create_cb_info(cb, data);
if (!cbinfo) {
}
ret = master_rpc_async_request(handler, packet, 0, pd_destroy_cb, cbinfo);
- if (ret < 0)
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}
return LB_STATUS_ERROR_INVALID;
}
- if (!cb)
+ if (!cb) {
cb = default_access_event_cb;
+ }
ret = send_access_event(handler, cmd, x * w, y * h);
if (ret == LB_STATUS_SUCCESS) {
}
if (type & CONTENT_EVENT_MOUSE_MOVE) {
- if (fabs(x - handler->pd.x) < MINIMUM_EVENT && fabs(y - handler->pd.y) < MINIMUM_EVENT)
+ if (fabs(x - handler->pd.x) < MINIMUM_EVENT && fabs(y - handler->pd.y) < MINIMUM_EVENT) {
return LB_STATUS_ERROR_BUSY;
+ }
} else if (type & CONTENT_EVENT_MOUSE_SET) {
flag = 0;
}
int flag = 1;
if (type & CONTENT_EVENT_MOUSE_MASK) {
- if (!handler->lb.mouse_event)
+ if (!handler->lb.mouse_event) {
return LB_STATUS_ERROR_INVALID;
+ }
if (!handler->lb.data.fb) {
ErrPrint("Handler is not valid\n");
}
if (type & CONTENT_EVENT_MOUSE_MOVE) {
- if (fabs(x - handler->lb.x) < MINIMUM_EVENT && fabs(y - handler->lb.y) < MINIMUM_EVENT)
+ if (fabs(x - handler->lb.x) < MINIMUM_EVENT && fabs(y - handler->lb.y) < MINIMUM_EVENT) {
return LB_STATUS_ERROR_BUSY;
+ }
} else if (type & CONTENT_EVENT_MOUSE_SET) {
flag = 0;
}
return NULL;
}
- if (handler->filename)
+ if (handler->filename) {
return handler->filename;
+ }
/* Oooops */
return util_uri_to_path(handler->id);
return LB_STATUS_ERROR_INVALID;
}
- if (!w)
+ if (!w) {
w = &_w;
- if (!h)
+ }
+ if (!h) {
h = &_h;
+ }
if (!handler->is_pd_created) {
*w = handler->pd.default_width;
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_group_changed_cb;
+ }
ret = master_rpc_async_request(handler, packet, 0, set_group_ret_cb, NULL);
if (ret == LB_STATUS_SUCCESS) {
for (j = i = 0; i < NR_OF_SIZE_LIST; i++) {
if (handler->lb.size_list & (0x01 << i)) {
- if (j == *cnt)
+ if (j == *cnt) {
break;
+ }
size_list[j++] = (0x01 << i);
}
}
ret = master_rpc_async_request(NULL, packet, 0, delete_cluster_cb, cbinfo);
- if (ret < 0)
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}
}
ret = master_rpc_async_request(NULL, packet, 0, delete_category_cb, cbinfo);
- if (ret < 0)
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}
{
const char *id;
id = fb_id(handler->lb.data.fb);
- if (id && !strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP)))
+ if (id && !strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP))) {
return LB_TYPE_PIXMAP;
+ }
}
return LB_TYPE_BUFFER;
case _LB_TYPE_TEXT:
{
const char *id;
id = fb_id(handler->pd.data.fb);
- if (id && !strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP)))
+ if (id && !strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP))) {
return PD_TYPE_PIXMAP;
+ }
}
return PD_TYPE_BUFFER;
default:
}
id = fb_id(handler->lb.data.fb);
- if (!id || strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP)))
+ if (!id || strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP))) {
return LB_STATUS_ERROR_INVALID;
+ }
packet = packet_create("lb_acquire_pixmap", "ss", handler->pkgname, handler->id);
if (!packet) {
return LB_STATUS_ERROR_FAULT;
}
- ret = master_rpc_async_request(handler, packet, 0, pixmap_acquired_cb, cbinfo);
- if (ret < 0)
+ ret = master_rpc_async_request(handler, packet, 0, lb_pixmap_acquired_cb, cbinfo);
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}
}
id = fb_id(handler->pd.data.fb);
- if (!id || strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP)))
+ if (!id || strncasecmp(id, SCHEMA_PIXMAP, strlen(SCHEMA_PIXMAP))) {
return LB_STATUS_ERROR_INVALID;
+ }
packet = packet_create("pd_acquire_pixmap", "ss", handler->pkgname, handler->id);
if (!packet) {
return LB_STATUS_ERROR_FAULT;
}
- ret = master_rpc_async_request(handler, packet, 0, pixmap_acquired_cb, cbinfo);
- if (ret < 0)
+ ret = master_rpc_async_request(handler, packet, 0, pd_pixmap_acquired_cb, cbinfo);
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_pinup_cb;
+ }
ret = master_rpc_async_request(handler, packet, 0, pinup_done_cb, NULL);
if (ret == LB_STATUS_SUCCESS) {
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_STATUS_ERROR_INVALID;
+ }
return handler->is_pinned_up;
}
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_STATUS_ERROR_INVALID;
+ }
return handler->lb.pinup_supported;
}
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE)
+ if (handler->state != CREATE) {
return LB_STATUS_ERROR_INVALID;
+ }
handler->data = data;
return LB_STATUS_SUCCESS;
return NULL;
}
- if (handler->state != CREATE)
+ if (handler->state != CREATE) {
return NULL;
+ }
return handler->data;
}
return NULL;
}
- if (handler->state != CREATE)
+ if (handler->state != CREATE) {
return NULL;
+ }
return handler->content;
}
return NULL;
}
- if (handler->state != CREATE)
+ if (handler->state != CREATE) {
return NULL;
+ }
return handler->title;
}
return LB_STATUS_ERROR_INVALID;
}
- if (!emission)
+ if (!emission) {
emission = "";
+ }
- if (!source)
+ if (!source) {
source = "";
+ }
packet = packet_create("text_signal", "ssssdddd",
handler->pkgname, handler->id, emission, source, sx, sy, ex, ey);
}
ret = master_rpc_async_request(handler, packet, 0, text_signal_cb, cbinfo);
- if (ret < 0)
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return LB_STATUS_ERROR_FAULT;
}
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_STATUS_ERROR_INVALID;
+ }
packet = packet_create_noack("update", "ss", handler->pkgname, handler->id);
if (!packet) {
return LB_STATUS_ERROR_INVALID;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_STATUS_ERROR_INVALID;
+ }
if (!handler->is_user) {
/* System cluster livebox cannot be changed its visible states */
}
}
- if (handler->visible == state)
+ if (handler->visible == state) {
return LB_STATUS_ERROR_ALREADY;
+ }
packet = packet_create_noack("change,visibility", "ssi", handler->pkgname, handler->id, (int)state);
if (!packet) {
}
ret = master_rpc_request_only(handler, packet);
- if (ret == 0)
+ if (ret == 0) {
handler->visible = state;
+ }
return ret;
}
return LB_VISIBLE_ERROR;
}
- if (handler->state != CREATE || !handler->id)
+ if (handler->state != CREATE || !handler->id) {
return LB_VISIBLE_ERROR;
+ }
return handler->visible;
}
}
}
- if (handler->cluster)
+ if (handler->cluster) {
free(handler->cluster);
+ }
- if (handler->category)
+ if (handler->category) {
free(handler->category);
+ }
handler->cluster = pc;
handler->category = ps;
struct fault_info *info;
dlist_foreach_safe(s_info.fault_list, l, n, info) {
- if (info->handler(event, pkgname, file, func, info->user_data) == EXIT_FAILURE)
+ if (info->handler(event, pkgname, file, func, info->user_data) == EXIT_FAILURE) {
s_info.fault_list = dlist_remove(s_info.fault_list, l);
+ }
}
}
struct event_info *info;
dlist_foreach_safe(s_info.event_list, l, n, info) {
- if (info->handler(handler, event, info->user_data) == EXIT_FAILURE)
+ if (info->handler(handler, event, info->user_data) == EXIT_FAILURE) {
s_info.event_list = dlist_remove(s_info.event_list, l);
+ }
}
}
struct livebox *handler;
dlist_foreach(s_info.livebox_list, l, handler) {
- if (!handler->id)
+ if (!handler->id) {
continue;
+ }
- if (!strcmp(handler->pkgname, pkgname) && !strcmp(handler->id, id))
+ if (!strcmp(handler->pkgname, pkgname) && !strcmp(handler->id, id)) {
return handler;
+ }
}
return NULL;
struct livebox *handler;
dlist_foreach(s_info.livebox_list, l, handler) {
- if (handler->timestamp == timestamp)
+ if (handler->timestamp == timestamp) {
return handler;
+ }
}
return NULL;
*/
if (s_info.prevent_overwrite) {
new_path = strdup(path);
- if (!new_path)
+ if (!new_path) {
ErrPrint("Heap: %s\n", strerror(errno));
+ }
return new_path;
}
handler->filename = get_file_kept_in_safe(id);
if (!handler->filename) {
handler->filename = strdup(util_uri_to_path(id));
- if (!handler->filename)
+ if (!handler->filename) {
ErrPrint("Error: %s\n", strerror(errno));
+ }
}
handler->timestamp = timestamp;
void lb_set_auto_launch(struct livebox *handler, const char *auto_launch)
{
- if (!strlen(auto_launch))
+ if (!strlen(auto_launch)) {
return;
+ }
handler->lb.auto_launch = strdup(auto_launch);
- if (!handler->lb.auto_launch)
+ if (!handler->lb.auto_launch) {
ErrPrint("Heap: %s\n", strerror(errno));
+ }
}
void lb_set_priority(struct livebox *handler, double priority)
void lb_set_id(struct livebox *handler, const char *id)
{
- if (handler->id)
+ if (handler->id) {
free(handler->id);
+ }
handler->id = strdup(id);
- if (!handler->id)
+ if (!handler->id) {
ErrPrint("Error: %s\n", strerror(errno));
+ }
- if (handler->filename)
+ if (handler->filename) {
free(handler->filename);
+ }
handler->filename = get_file_kept_in_safe(id);
if (!handler->filename) {
handler->filename = strdup(util_uri_to_path(id));
- if (!handler->filename)
+ if (!handler->filename) {
ErrPrint("Error: %s\n", strerror(errno));
+ }
}
}
{
struct fb_info *fb;
- if (!handler)
+ if (!handler) {
return LB_STATUS_ERROR_INVALID;
+ }
fb = handler->lb.data.fb;
- if (fb && !strcmp(fb_id(fb), filename)) /*!< BUFFER is not changed, */
+ if (fb && !strcmp(fb_id(fb), filename)) { /*!< BUFFER is not changed, */
return LB_STATUS_SUCCESS;
+ }
handler->lb.data.fb = NULL;
if (!filename || filename[0] == '\0') {
- if (fb)
+ if (fb) {
fb_destroy(fb);
+ }
return LB_STATUS_SUCCESS;
}
handler->lb.data.fb = fb_create(filename, handler->lb.width, handler->lb.height);
if (!handler->lb.data.fb) {
ErrPrint("Faield to create a FB\n");
- if (fb)
+ if (fb) {
fb_destroy(fb);
+ }
return LB_STATUS_ERROR_FAULT;
}
- if (fb)
+ if (fb) {
fb_destroy(fb);
+ }
return LB_STATUS_SUCCESS;
}
{
struct fb_info *fb;
- if (!handler)
+ if (!handler) {
return LB_STATUS_ERROR_INVALID;
+ }
fb = handler->pd.data.fb;
if (fb && !strcmp(fb_id(fb), filename)) {
handler->pd.data.fb = NULL;
if (!filename || filename[0] == '\0') {
- if (fb)
+ if (fb) {
fb_destroy(fb);
+ }
return LB_STATUS_SUCCESS;
}
handler->pd.data.fb = fb_create(filename, handler->pd.width, handler->pd.height);
if (!handler->pd.data.fb) {
ErrPrint("Failed to create a FB\n");
- if (fb)
+ if (fb) {
fb_destroy(fb);
+ }
return LB_STATUS_ERROR_FAULT;
}
- if (fb)
+ if (fb) {
fb_destroy(fb);
+ }
return LB_STATUS_SUCCESS;
}
struct livebox *lb_ref(struct livebox *handler)
{
- if (!handler)
+ if (!handler) {
return NULL;
+ }
handler->refcnt++;
return handler;
struct livebox *lb_unref(struct livebox *handler)
{
- if (!handler)
+ if (!handler) {
return NULL;
+ }
handler->refcnt--;
- if (handler->refcnt > 0)
+ if (handler->refcnt > 0) {
return handler;
+ }
if (handler->created_cb) {
handler->created_cb(handler, LB_STATUS_ERROR_FAULT, handler->created_cbdata);
handler->access_event_cbdata = NULL;
}
- if (handler->filename)
+ if (handler->filename) {
util_unlink(handler->filename);
+ }
dlist_remove_data(s_info.livebox_list, handler);
packet = packet_create("delete", "ss", handler->pkgname, handler->id);
if (!packet) {
ErrPrint("Failed to build a param\n");
- if (cb)
+ if (cb) {
cb(handler, LB_STATUS_ERROR_FAULT, data);
+ }
return LB_STATUS_ERROR_FAULT;
}
- if (!cb)
+ if (!cb) {
cb = default_delete_cb;
+ }
cbinfo = create_cb_info(cb, data);
if (!cbinfo) {
}
ret = master_rpc_async_request(handler, packet, 0, del_ret_cb, cbinfo);
- if (ret < 0)
+ if (ret < 0) {
destroy_cb_info(cbinfo);
+ }
return ret;
}