Fix Memory Leak 44/229144/3
authorDewal Agarwal <d1.agarwal@samsung.com>
Mon, 30 Mar 2020 05:09:41 +0000 (10:39 +0530)
committerRandeep Singh <randeep.s@samsung.com>
Tue, 31 Mar 2020 05:20:47 +0000 (10:50 +0530)
Change-Id: Iba2001aa96ed199131cb1b29110cac65d8be42a4
Signed-off-by: Dewal Agarwal <d1.agarwal@samsung.com>
src/battery_dump/bd_history_item.c

index 3c443b0..218f85d 100644 (file)
@@ -516,8 +516,6 @@ static int bd_get_and_print_gwst_stat_entry_from_dump(int fd, long int duration)
 static int bd_get_and_print_gcpu_stat_entry_from_dump(int fd, long int duration)
 {
        ENTER;
-       bd_gl_cpu_stat_s *gcpu_stat = (bd_gl_cpu_stat_s *)calloc(1, sizeof(bd_gl_cpu_stat_s));
-       BM_CHECK_MEM_ALLOC(gcpu_stat, {});
 
        int ret = BATTERY_MONITOR_ERROR_NONE;
        const char *rid_str = NULL; int usage = 0;
@@ -526,10 +524,12 @@ static int bd_get_and_print_gcpu_stat_entry_from_dump(int fd, long int duration)
                bm_server_query_resource_usage_resourceid(rid_str, 1, &ret);
        if (res_use == NULL || ret != BATTERY_MONITOR_ERROR_NONE) {
                _ERR("For resourceid %s", rid_str);
-               _DBG("Dump only system stats");
+               return ret;
        }
        usage = res_use->usage;
        float usagemah = (float)usage/3600;
+       bd_gl_cpu_stat_s *gcpu_stat = (bd_gl_cpu_stat_s *)calloc(1, sizeof(bd_gl_cpu_stat_s));
+       BM_CHECK_MEM_ALLOC(gcpu_stat, {BM_FREE(res_use); });
        ret = bm_server_battery_dump_query_from_db(gcpu_stat, 7, duration);
        if (ret != BATTERY_MONITOR_ERROR_NONE) {
                _ERR("Unable to fetch data from DB");
@@ -537,6 +537,7 @@ static int bd_get_and_print_gcpu_stat_entry_from_dump(int fd, long int duration)
                BM_FREE(res_use);
                return ret;
        }
+
        GString *dump_p = g_string_sized_new(30);
        BM_CHECK_MEM_ALLOC(dump_p, {BM_FREE(gcpu_stat); BM_FREE(res_use);});
        g_string_append(dump_p, TIZEN_DUMP_VERSION);
@@ -550,7 +551,9 @@ static int bd_get_and_print_gcpu_stat_entry_from_dump(int fd, long int duration)
        _DBG("%s", dump_p->str);
        if (write(fd, dump_p->str, dump_p->len) < 0)
                _WARN("write error");
-       g_string_free(dump_p, TRUE);
+
+       g_free(dump_p->str);
+       BM_FREE(gcpu_stat);
 
        EXIT;
        return ret;