pass: parser: update pass->num_resources properly
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Mon, 30 Oct 2017 10:34:33 +0000 (19:34 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Mon, 20 Nov 2017 00:52:33 +0000 (09:52 +0900)
During pass_resource_config(), if allocation of res is failed,
pass->num_resources is only updated. Also, after pass->res is
freed from pass_put_resource_config(), pass->num_resources is not
set to 0. Update pass->num_resources propery from both cases.

Change-Id: Idb72e0fe46889436ded7aa07e514e78e9594e2c6
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
src/pass/pass-parser.c

index 07f483ed238d42ede51204f7e9376d3bb07fb71c..aa7c94ea4152730405f8b14ec0e068aca5a3fa8d 100644 (file)
@@ -635,15 +635,16 @@ static int pass_resource_config(struct parse_result *result, void *user_data)
                                _E("cannot parse %s\n", result->name);
                                return -EINVAL;
                        }
-                       pass->num_resources = num_resources;
 
-                       pass->res = calloc(pass->num_resources,
+                       pass->res = calloc(num_resources,
                                        sizeof(struct pass_resource));
                        if (!pass->res) {
                                _E("cannot allocate the memory for resource");
                                return -ENOMEM;
                        }
 
+                       pass->num_resources = num_resources;
+
                        /* Set init. value of initdata for each h/w resource */
                        for (i = 0; i < num_resources ; i++) {
                                struct pass_resource *cur;
@@ -697,4 +698,5 @@ void pass_put_resource_config(struct pass *pass)
 {
        free(pass->res);
        pass->res = NULL;
+       pass->num_resources = 0;
 }