From: Youngjae Cho Date: Thu, 9 Mar 2023 00:23:06 +0000 (+0900) Subject: resource-manager: Relocate add_resource() in create_resource() X-Git-Tag: accepted/tizen/unified/20230310.062652~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F94%2F289494%2F3;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git resource-manager: Relocate add_resource() in create_resource() If operations following the add_resource() fail, then it is necessary to cleanup resource instance from hashtable that has been added by add_resource(). Instead of impelementing cleanup, move add_resource() to the end of create_resource() so that nothing follow add_resource(). Change-Id: I705a3dc3487c8ebf9e80cff51b7e89069a6a4f1a Signed-off-by: Youngjae Cho --- diff --git a/src/resource-manager/resource-manager.c b/src/resource-manager/resource-manager.c index b3f3b9d..a870a0b 100644 --- a/src/resource-manager/resource-manager.c +++ b/src/resource-manager/resource-manager.c @@ -248,12 +248,6 @@ create_resource(int *resource_id, int resource_type, int instance_type) return -ENOMEM; } - ret = add_resource(resource); - if (ret < 0) { - free_resource(resource); - return ret; - } - for (i = 0; i < resource->num_attrs; i++) resource->attrs_value[i].type = driver->attrs[i].type; @@ -271,6 +265,14 @@ create_resource(int *resource_id, int resource_type, int instance_type) *resource_id = resource->id; + ret = add_resource(resource); + if (ret < 0) { + if (driver->ops.delete) + driver->ops.delete(resource->id); + free_resource(resource); + return ret; + } + return 0; }